Python SciKit Learn 和 Pandas 分类数据
Python SciKitLearn and Pandas categoric data
我正在研究 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()
您可以使用 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/label列
outcome = predictor['label']
del predictor['label']
然后在数据上调用模型做
est = sm.OLS(outcome, predictor).fit()
我正在研究 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()
您可以使用 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/label列outcome = predictor['label']
del predictor['label']
然后在数据上调用模型做
est = sm.OLS(outcome, predictor).fit()