Python SciKitLearn和Pandas分类数据

时间:2017-08-18 14:17:00

标签: python pandas scikit-learn sklearn-pandas one-hot-encoding

我正在研究csv的多变量回归,根据多种因素预测作物的表现。我的一些专栏是数字和有意义的。其他的是数字和分类,或字符串和分类(例如,作物种类,或情节代码或其他。)我如何教Python使用它们?我找到了一个热门编码器(http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html#sklearn.preprocessing.OneHotEncoder),但我真的不明白如何在这里应用它。

到目前为止我的代码:

import pandas as pd
import statsmodels.api as sm
from sklearn.preprocessing import StandardScaler
df = pd.read_csv('filepath.csv')

df.drop(df[df['LabeledDataColumn'].isnull()].index.tolist(),inplace=True)

scale = StandardScaler()

pd.options.mode.chained_assignment = None  # default='warn'
X = df[['inputColumn1', 'inputColumn2', ...,'inputColumn20']]
y = df['LabeledDataColumn']

X[['inputColumn1', 'inputColumn2', ...,'inputColumn20']] = scale.fit_transform(X[['inputColumn1', 'inputColumn2', ...,'inputColumn20']].as_matrix())

#print (X)

est = sm.OLS(y, X).fit()

est.summary()

1 个答案:

答案 0 :(得分:1)

您可以使用get_dummies函数pandas提供并转换分类值。

像这样......

predictor = pd.concat([data.get(['numerical_column_1','numerical_column_2','label']),
                           pd.get_dummies(data['categorical_column1'], prefix='Categorical_col1'),
                           pd.get_dummies(data['categorical_column2'], prefix='categorical_col2'),
                          axis=1)

然后你可以通过

获得结果/标签栏
outcome = predictor['label']
del predictor['label']

然后在数据上调用模型

est = sm.OLS(outcome, predictor).fit()