【发布时间】:2019-04-28 06:49:45
【问题描述】:
我正在尝试对一些分类特征进行编码,以便能够将它们用作机器学习模型中的特征,目前我有以下代码:
data_path = '/Users/novikov/Assignment2/epl-training.csv'
data = pd.read_csv(data_path)
data['Date'] = pd.to_datetime(data['Date'])
le = preprocessing.LabelEncoder()
data['HomeTeam'] = le.fit_transform(data.HomeTeam.values)
data['AwayTeam'] = le.fit_transform(data.AwayTeam.values)
data['FTR'] = le.fit_transform(data.FTR.values)
data['HTR'] = le.fit_transform(data.HTR.values)
data['Referee'] = le.fit_transform(data.Referee.values)
这很好用,但这并不理想,因为如果要编码 100 个特征,手动完成会花费很长时间。我如何自动化这个过程?我试过实现一个循环:
label_encode = ['HomeTeam', 'AwayTeam', 'FTR', 'HTR', 'Referee']
for feature in label_encode:
method = 'data.' + feature + '.values'
data[feature] = le.fit_transform(method)
但我得到ValueError: bad input shape ():
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-11-1b8fb6164d2d> in <module>()
11 method = 'data.' + feature + '.values'
12 print(method)
---> 13 data[feature] = le.fit_transform(method)
/anaconda3/lib/python3.6/site-packages/sklearn/preprocessing/label.py in fit_transform(self, y)
109 y : array-like of shape [n_samples]
110 """
--> 111 y = column_or_1d(y, warn=True)
112 self.classes_, y = np.unique(y, return_inverse=True)
113 return y
/anaconda3/lib/python3.6/site-packages/sklearn/utils/validation.py in column_or_1d(y, warn)
612 return np.ravel(y)
613
--> 614 raise ValueError("bad input shape {0}".format(shape))
615
616
ValueError: bad input shape ()
这段代码的所有变体(比如只输入data.feature.values)似乎都不起作用。除了手写之外,肯定还有其他方法。
【问题讨论】:
标签: python pandas machine-learning encoding scikit-learn