我有一个超过10列的CSV文件,有些列有分类数据,有些分类列只有yes和{}值,有些列有颜色(green,blue,red…),有些列有其他字符串值。在
有没有一种方法可以使回归模型包含所有列?在
我知道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)
在我使用的实际数据集中,这些字符串值对数据集非常重要,因此我不能只删除该列