使用 Scikit-Learn 使用分类数据制作回归模型

在后面

我有一个超过 10 列的 CSV 文件,其中一些列有分类数据,一些分类列只有yesno值,一些列有颜色(green, blue, red...),一些列有其他字符串值。

有没有办法用所有列制作回归模型?

我知道yesno值可以表示为 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)

在我使用的真实数据集中,这些字符串值对数据集非常重要,所以我不能只删除该列

乔哈利维尔

您通常会“一次性编码”分类变量。这也称为“添加虚拟变量”。

您还需要“标准化”数值变量。

Scikit-learn 让这一切变得简单:

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder

t = ColumnTransformer(transformers=[
    ('onehot', OneHotEncoder(), ['par3', 'par4']),
    ('scale', StandardScaler(), ['par1', 'par2'])
], remainder='passthrough') # Default is to drop untransformed columns

t.fit_transform(df)

最后,在通过模型运行之前,您需要以相同的方式转换输入。

将所有这些放在一起,您将得到:

import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder, StandardScaler


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]})

t = ColumnTransformer(transformers=[
    ('onehot', OneHotEncoder(), ['par3', 'par4']),
    ('scale', StandardScaler(), ['par1', 'par2'])
], remainder='passthrough')

# Transform the features
features = t.fit_transform(df.iloc[:,:-1])
result = df.iloc[:,-1]

# Train the linear regression model
reg = LinearRegression()
model = reg.fit(features, result)

# Generate a prediction
example = t.transform(pd.DataFrame([{
    'par1': 2, 'par2': 0.33, 'par3': 'no', 'par4': 'red'
}]))
prediction = model.predict(example)
reg_score = reg.score(features, result)
print(prediction, reg_score)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用scikit-learn处理分类特征

来自分类Dev

使用scikit-learn处理分类特征

来自分类Dev

使用scikit-learn生成困难分类数据集

来自分类Dev

使用scikit-learn训练多维数据

来自分类Dev

使用ElasticNetCV的Scikit-Learn多元回归失败

来自分类Dev

如何使用scikit-learn执行多元线性回归?

来自分类Dev

如何使用scikit-learn执行多元线性回归?

来自分类Dev

使用scikit-learn让熊猫玩得开心

来自分类Dev

使用Scikit Learn进行Unigram分析

来自分类Dev

如何使用 scikit learn 预测目标标签

来自分类Dev

使用 Anaconda 更新 scikit-learn 失败

来自分类Dev

使用scikit-learn处理太多分类功能

来自分类Dev

使用scikit-learn进行二次采样+分类

来自分类Dev

在Scikit-Learn中使用近似最近邻进行分类

来自分类Dev

如何预处理新实例进行分类,以使特征编码与使用Scikit-learn的模型相同?

来自分类Dev

如何使用scikit-learn加载先前保存的模型并使用新的训练数据扩展模型

来自分类Dev

如何使用scikit-learn加载先前保存的模型并使用新的训练数据扩展模型

来自分类Dev

使用Scikit Learn对时间序列熊猫数据框进行线性回归

来自分类Dev

使用scikit-learn(sklearn),如何处理缺失数据(因变量y)进行线性回归?

来自分类Dev

如何使用scikit-learn训练XOR模型?

来自分类Dev

scikit-learn:如何使用拟合概率模型?

来自分类Dev

如何使用 scikit-learn 评估基于文本的模型?

来自分类Dev

在 scikit-learn 中使用图像数据拟合支持向量分类器会产生错误

来自分类Dev

无法使用scikit-learn导入“数据集”

来自分类Dev

无法使用scikit-learn导入“数据集”

来自分类Dev

在 csv 数据集上使用 Scikit-learn

来自分类Dev

scikit-learn进行回归模型评估

来自分类Dev

使用Scikit-Learn使用Momentum进行反向传播

来自分类Dev

使用带有不同熊猫数据框的scikit-learn运行LinearRegression模型(循环问题)

Related 相关文章

  1. 1

    使用scikit-learn处理分类特征

  2. 2

    使用scikit-learn处理分类特征

  3. 3

    使用scikit-learn生成困难分类数据集

  4. 4

    使用scikit-learn训练多维数据

  5. 5

    使用ElasticNetCV的Scikit-Learn多元回归失败

  6. 6

    如何使用scikit-learn执行多元线性回归?

  7. 7

    如何使用scikit-learn执行多元线性回归?

  8. 8

    使用scikit-learn让熊猫玩得开心

  9. 9

    使用Scikit Learn进行Unigram分析

  10. 10

    如何使用 scikit learn 预测目标标签

  11. 11

    使用 Anaconda 更新 scikit-learn 失败

  12. 12

    使用scikit-learn处理太多分类功能

  13. 13

    使用scikit-learn进行二次采样+分类

  14. 14

    在Scikit-Learn中使用近似最近邻进行分类

  15. 15

    如何预处理新实例进行分类,以使特征编码与使用Scikit-learn的模型相同?

  16. 16

    如何使用scikit-learn加载先前保存的模型并使用新的训练数据扩展模型

  17. 17

    如何使用scikit-learn加载先前保存的模型并使用新的训练数据扩展模型

  18. 18

    使用Scikit Learn对时间序列熊猫数据框进行线性回归

  19. 19

    使用scikit-learn(sklearn),如何处理缺失数据(因变量y)进行线性回归?

  20. 20

    如何使用scikit-learn训练XOR模型?

  21. 21

    scikit-learn:如何使用拟合概率模型?

  22. 22

    如何使用 scikit-learn 评估基于文本的模型?

  23. 23

    在 scikit-learn 中使用图像数据拟合支持向量分类器会产生错误

  24. 24

    无法使用scikit-learn导入“数据集”

  25. 25

    无法使用scikit-learn导入“数据集”

  26. 26

    在 csv 数据集上使用 Scikit-learn

  27. 27

    scikit-learn进行回归模型评估

  28. 28

    使用Scikit-Learn使用Momentum进行反向传播

  29. 29

    使用带有不同熊猫数据框的scikit-learn运行LinearRegression模型(循环问题)

热门标签

归档