Python SciKit Learn 和 Pandas 分类数据

Posted

技术标签:

【中文标题】Python SciKit Learn 和 Pandas 分类数据【英文标题】:Python SciKitLearn and Pandas categoric data 【发布时间】:2018-01-27 06:31:26 【问题描述】:

我正在研究 csv 的多变量回归,基于多个因素预测作物表现。我的一些专栏是数字和有意义的。其他的是数字和分类,或字符串和分类(例如,作物品种,或情节代码或其他)。我如何教 Python 使用它们?我找到了 One Hot Encoder (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()

【问题讨论】:

对于你的分类数据,你应该试试 scikit learn 的标签编码器 (scikit-learn.org/stable/modules/generated/…) @KevinK。谢谢!如果您不介意我问,我将如何将其应用于此示例? 创建一个新的标签编码器le = LabelEncoder(),使其适合您的数据le.fit(df['SomeColumn'])并转换您的数据df['SomeColumn'] = le.transform(df['SomeColumn']) 【参考方案1】:

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

像这样..

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()

【讨论】:

这样的事情怎么样? ` pd.factorize(df.featureX) mapped_featureX = pd.factorize(df.featureX) df['transformed_featureX'] = mapped_featureX[0].astype(float) # 或者任何可以是 int 的东西 ` Well..get_dummies() 要容易得多。试一试,让我知道,如果你认为它有效,请点赞。 它抛出一个错误:文件“”,第 13 行 axis=1]) ^ SyntaxError: invalid syntax 如果您可以在问题中粘贴一些示例数据,我可以尝试调试它

以上是关于Python SciKit Learn 和 Pandas 分类数据的主要内容,如果未能解决你的问题,请参考以下文章

数据预处理(Python scikit-learn)

python 和 scikit-learn 实现垃圾邮件过滤

Python / Scikit-Learn - 无法处理多类和连续的混合

Python SciKit Learn 和 Pandas 分类数据

机器学习系列4 使用Python创建Scikit-Learn回归模型

python scikit-learn 环境搭建问题解决记录