【发布时间】:2020-01-29 12:12:46
【问题描述】:
我有一个超过 10 列的 CSV 文件,其中一些列有分类数据,一些分类列只有 yes 和 no 值,一些列有颜色(green、blue、@ 987654325@...) 并且某些列具有其他字符串值。
有没有办法让所有列的回归模型?
我知道 yes 和 no 值可以表示为 1 和 0,但我读过用数字表示颜色名称或城市名称并不好。
有没有更好/正确的方法来做到这一点?
这是带有虚拟数据的简单代码:
import pandas as pd
from sklearn.linear_model import LinearRegression
df = pd.DataFrame({'par1':[1,3,5,7,9, 11,13],
'par2':[0.2, 0.4, 0.5, 0.7, 1, 1.2, 1.45],
'par3':['yes', 'no', 'no', 'yes', 'no', 'yes', 'no'],
'par4':['blue', 'red', 'red', 'blue', 'green', 'green', 'blue'],
'output':[103, 310, 522, 711, 921, 1241, 1451]})
print(df)
features = df.iloc[:,:-1]
result = df.iloc[:,-1]
reg = LinearRegression()
model = reg.fit(features, result)
prediction = model.predict([[2, 0.33, 'no', 'red']])
reg_score = reg.score(features, result)
print(prediction, reg_score)
在我使用的真实数据集中,这些字符串值对数据集非常重要,所以我不能只删除该列
【问题讨论】:
-
我想你要找的关键词是
one-hot encoding,你可以在谷歌上找这个,找到你需要的一切:) -
在
par4上使用pandas.dummies,类似于一种热编码 -
可以有多种方法。您还可以在 sklearn 中查找 FeatureHasher。每种方法都有其优点和缺点。您可以针对您的案例浏览 sklearn 的官方文档。
标签: python machine-learning scikit-learn