質問編集履歴
6
コードの編集
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,88 +1,88 @@
|
|
1
1
|
```
|
2
2
|
|
3
|
-
|
3
|
+
from sklearn.preprocessing import OneHotEncoder
|
4
4
|
|
5
|
-
|
5
|
+
import random
|
6
6
|
|
7
|
-
|
7
|
+
all_data=pd.read_csv('./all_data.csv',dtype=object,encoding='SHIFT-JIS')
|
8
8
|
|
9
|
-
|
9
|
+
all_data['馬体重']=all_data['馬体重'].astype(int) # 馬体重のみをint型にする。
|
10
10
|
|
11
|
-
|
11
|
+
all_data.dropna(inplace=True) # NaNを含む列を削除
|
12
12
|
|
13
|
-
|
13
|
+
X=all_data.loc[:,'枠':'条件']
|
14
14
|
|
15
|
-
|
15
|
+
y=all_data.loc[:,'上位以内']
|
16
16
|
|
17
|
-
|
17
|
+
X_train,X_test,y_train,y_test=separate_train_to_test(X,y) # X,yを3:1の割合で分ける関数
|
18
18
|
|
19
19
|
|
20
20
|
|
21
21
|
# X_trainは、DataFrameに渡してある。
|
22
22
|
|
23
|
-
|
23
|
+
X_header=X_train.columns.values
|
24
24
|
|
25
|
-
|
25
|
+
judge_str=[type(s)==type('object') for s in X_train.loc[random.randint(0,len(X_train)),:]]
|
26
26
|
|
27
|
-
|
27
|
+
col_str=[s for s,bl in zip(X_header,judge_str) if bl] # データ値が文字(object)であるもののヘッダーを取得
|
28
28
|
|
29
|
-
|
29
|
+
col_num=[s for s,bl in zip(X_header,judge_str) if not bl] # データ値が数値であるもののヘッダーを取得(ここでは'馬体重'ヘッダーのみが該当)
|
30
30
|
|
31
|
-
|
31
|
+
# カテゴリ変数のダミー化
|
32
32
|
|
33
|
-
|
33
|
+
ohe=OneHotEncoder(handle_unknown='ignore',sparse=False)
|
34
34
|
|
35
|
-
|
35
|
+
X_train_trans=ohe.fit_transform(X_train[col_str]) # カテゴリー変数のみダミー化
|
36
36
|
|
37
|
-
|
37
|
+
col_str_class=[cls for ary in ohe.categories_ for cls in ary] # ダミー化したもののヘッダー
|
38
38
|
|
39
|
-
|
39
|
+
# ダミー変数と連続値の結合(訓練データ)
|
40
40
|
|
41
|
-
|
41
|
+
af_X_train_trans=DataFrame(X_train_trans,columns=col_str_class)
|
42
42
|
|
43
|
-
|
43
|
+
af_X_train_trans[col_num]=X_train[col_num]
|
44
44
|
|
45
|
-
|
45
|
+
# 訓練データを参照しカテゴリ変数のダミー変数の生成と、その結合(テストデータ)
|
46
46
|
|
47
|
-
|
47
|
+
X_test_trans=ohe.transform(X_test[col_str])
|
48
48
|
|
49
|
-
|
49
|
+
af_X_test_trans=DataFrame(X_test_trans,columns=col_str_class)
|
50
50
|
|
51
|
-
|
51
|
+
af_X_test_trans[col_num]=X_test[col_num]
|
52
52
|
|
53
|
-
|
53
|
+
# 確認
|
54
54
|
|
55
|
-
|
55
|
+
print(f'axis=0:{X_train[col_num].isnull().any(axis=0)}') # axis=0:馬体重 False
|
56
56
|
|
57
|
-
|
57
|
+
for i,s in enumerate(X_train[col_num].isnull().any(axis=1)):
|
58
58
|
|
59
|
-
|
59
|
+
if s:
|
60
60
|
|
61
|
-
|
61
|
+
print(i)
|
62
62
|
|
63
63
|
# なにも表示されないため該当なし
|
64
64
|
|
65
|
-
|
65
|
+
print('-'*20)
|
66
66
|
|
67
|
-
|
67
|
+
find_NaN=af_X_train_trans.isnull().any(axis=0)
|
68
68
|
|
69
|
-
|
69
|
+
for i,s in enumerate(find_NaN):
|
70
70
|
|
71
|
-
|
71
|
+
if s:
|
72
72
|
|
73
|
-
|
73
|
+
print(i)
|
74
74
|
|
75
75
|
# 4120 # これは結合した'馬体重'の列
|
76
76
|
|
77
|
-
|
77
|
+
find_NaN=af_X_train_trans.isnull().any(axis=1)
|
78
78
|
|
79
|
-
|
79
|
+
for i,s in enumerate(find_NaN):
|
80
80
|
|
81
|
-
|
81
|
+
if s:
|
82
82
|
|
83
|
-
|
83
|
+
print(i)
|
84
84
|
|
85
|
-
|
85
|
+
print(af_X_train_trans['馬体重'][i])
|
86
86
|
|
87
87
|
'''
|
88
88
|
|
@@ -152,9 +152,9 @@
|
|
152
152
|
|
153
153
|
'''
|
154
154
|
|
155
|
-
|
155
|
+
print(af_X_train_trans['馬体重'].shape) # (8194,)
|
156
156
|
|
157
|
-
|
157
|
+
print(af_X_train_trans.shape) # (8194, 4121)
|
158
158
|
|
159
159
|
```
|
160
160
|
|
5
コードの編集
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
```
|
2
2
|
|
3
3
|
from sklearn.preprocessing import OneHotEncoder
|
4
|
+
|
5
|
+
import random
|
4
6
|
|
5
7
|
all_data=pd.read_csv('./all_data.csv',dtype=object,encoding='SHIFT-JIS')
|
6
8
|
|
4
コードの編集
test
CHANGED
File without changes
|
test
CHANGED
@@ -2,17 +2,17 @@
|
|
2
2
|
|
3
3
|
from sklearn.preprocessing import OneHotEncoder
|
4
4
|
|
5
|
-
all_data=pd.read_csv('./all_data.csv',dtype=object,encoding='SHIFT-JIS')
|
5
|
+
all_data=pd.read_csv('./all_data.csv',dtype=object,encoding='SHIFT-JIS')
|
6
6
|
|
7
|
-
all_data['馬体重']=all_data['馬体重'].astype(int) # 馬体重のみをint型にする。
|
7
|
+
all_data['馬体重']=all_data['馬体重'].astype(int) # 馬体重のみをint型にする。
|
8
8
|
|
9
|
-
all_data.dropna(inplace=True) # NaNを含む列を削除
|
9
|
+
all_data.dropna(inplace=True) # NaNを含む列を削除
|
10
10
|
|
11
|
-
X=all_data.loc[:,'枠':'条件']
|
11
|
+
X=all_data.loc[:,'枠':'条件']
|
12
12
|
|
13
|
-
y=all_data.loc[:,'上位以内']
|
13
|
+
y=all_data.loc[:,'上位以内']
|
14
14
|
|
15
|
-
X_train,X_test,y_train,y_test=separate_train_to_test(X,y) # X,yを3:1の割合で分ける関数
|
15
|
+
X_train,X_test,y_train,y_test=separate_train_to_test(X,y) # X,yを3:1の割合で分ける関数
|
16
16
|
|
17
17
|
|
18
18
|
|
3
コードの編集
test
CHANGED
File without changes
|
test
CHANGED
@@ -156,6 +156,6 @@
|
|
156
156
|
|
157
157
|
```
|
158
158
|
|
159
|
-
OneHotEncoderを用いて、訓練データXを最初にカテゴリー変数と連続値に分け、カテゴリー変数のみをダミー化した後に連続値と結合させる処理を施しました。ですが、ダミー化したカテゴリー変数単体と連続値にはNaNが含まれていないのに、それらを結合させると'馬体重'にNaNが発生してしまいます。
|
159
|
+
OneHotEncoderを用いて、dropna()を用いてNaNを省いた訓練データXを最初にカテゴリー変数と連続値に分け、カテゴリー変数のみをダミー化した後に連続値と結合させる処理を施しました。ですが、ダミー化したカテゴリー変数単体と連続値にはNaNが含まれていないのに、それらを結合させると'馬体重'にNaNが発生してしまいます。
|
160
160
|
|
161
161
|
助言をお願いします。
|
2
コードの編集
test
CHANGED
File without changes
|
test
CHANGED
@@ -61,6 +61,16 @@
|
|
61
61
|
# なにも表示されないため該当なし
|
62
62
|
|
63
63
|
print('-'*20)
|
64
|
+
|
65
|
+
find_NaN=af_X_train_trans.isnull().any(axis=0)
|
66
|
+
|
67
|
+
for i,s in enumerate(find_NaN):
|
68
|
+
|
69
|
+
if s:
|
70
|
+
|
71
|
+
print(i)
|
72
|
+
|
73
|
+
# 4120 # これは結合した'馬体重'の列
|
64
74
|
|
65
75
|
find_NaN=af_X_train_trans.isnull().any(axis=1)
|
66
76
|
|
1
コードの編集
test
CHANGED
File without changes
|
test
CHANGED
@@ -146,6 +146,6 @@
|
|
146
146
|
|
147
147
|
```
|
148
148
|
|
149
|
-
OneHotEncoderを用いて、訓練データXを最初にカテゴリー変数と連続値に分け、カテゴリー変数のみをダミー化した後に連続値と結合させる処理を施しました。ですが、ダミー化したカテゴリー変数単体と連続値にはNaNが含まれていないのに、それらを結合させるとNaNが発生してしまいます。
|
149
|
+
OneHotEncoderを用いて、訓練データXを最初にカテゴリー変数と連続値に分け、カテゴリー変数のみをダミー化した後に連続値と結合させる処理を施しました。ですが、ダミー化したカテゴリー変数単体と連続値にはNaNが含まれていないのに、それらを結合させると'馬体重'にNaNが発生してしまいます。
|
150
150
|
|
151
151
|
助言をお願いします。
|