gpt4 book ai didi

machine-learning - 我如何将 30 个类别转换为 scikit 的数字

转载 作者:太空宇宙 更新时间:2023-11-04 08:05:16 26 4
gpt4 key购买 nike

我是统计学、Python、机器学习和 Scikit-learn 的新手。但是,我正在尝试这个项目,其中我有一个包含 35 列学生数据的 CSV。第一列是我认为可以忽略的 ID。最后 3 列是 1 年级、2 年级和 3 年级的分数。我有 400 行。我想看看我是否可以用它学习一些机器学习,并理解我拥有的数据。现在我明白 Scikit 在 Numpy 数组上工作,这些数组不处理性别('男性','女性')等分类数据。所以我将所有 30 个类别编纂为 1 个男性,2 个女性,依此类推。然后我做了以下

X = my_data[:,1:33]
y = my_data[:,34]
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X,y)
expected = y
predicted = model.predict(X)
mse = np.mean((predicted-expected)**2)
print(mse)
print(model.score(X,y))

我的 MSE 为 6.0839840461,模型得分为 0.709407474898。

我得到了一些结果。到目前为止,第一次尝试还不错。然而,我意识到,由于我分配了递增的代码值,例如男性为 1,女性为 2,线性回归会将它们视为权重。如何将性别列替换为 [1,0] 或 [0,1],我了解到这是表示分类数据的正确方法?它是字典类型的列还是列表类型的列?如果是这样,它将如何成为 Numpy 数组的一部分?

最佳答案

这称为指标虚拟变量,Pandas 允许轻松编码此类分类值:

>>> import pandas as pd
>>> pd.get_dummies(['male', 'female'])
female male
0 0 1
1 1 0

不要忘记 multicollinearity ,虽然 - 像线性回归这样的算法依赖于变量的独立性,而在你的情况下 female=0 绝对意味着 male=1。在这种情况下,只需删除一个虚拟变量(例如,仅使用 female var 而不是 male)。

关于machine-learning - 我如何将 30 个类别转换为 scikit 的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32378774/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com