gpt4 book ai didi

python - 如何使用 sklearn 对少数因素和许多训练因素进行回归

转载 作者:行者123 更新时间:2023-11-30 08:49:32 24 4
gpt4 key购买 nike

我最近一直在尝试让 sklearn 处理我的数据。我的大约 20k 行中的每一行都有 609 列数据。数据格式如下:

  • 第 0-7 行分别是不同类型的“输出”(第 1-8 行均独立地基于“输入”)

  • 第 8-608 行是“输入值”,即产生前七列输出的值。

所有这些值都可以在名为 unlabelled.csv 的文件中找到,或者实际上是您选择分配的任何名称的 CSV。

所以我一直在尝试对其运行 SGD 回归,如下所示:

import sklearn
from sklearn import linear_model as linmod
import numpy as np
rawdata=open('unlabelled.csv','r')
dataset=np.loadtxt(rawdata,delimiter=",") # this is where there's a hang
factzero=dataset[:,0]
factone=dataset[:,1]
facttwo=dataset[:,2]
factthree=dataset[:,3]
factfour=dataset[:,4]
factfive=dataset[:,5]
factsix=dataset[:,6]
factseven=dataset[:,7]
base=dataset[:,8:608]
facts=[factzero,factone,facttwo,factthree,factfour,factfive,factsix,factseven]
clf=linmod.SGDRegressor()
for fact in facts:
clf.fit(base,fact)

现在,返回(无论如何,在 python 命令行):

SGDRegressor(alpha=0.0001, average=False, epsilon=0.1, eta0=0.01,
fit_intercept=True, l1_ratio=0.15, learning_rate='invscaling',
loss='squared_loss', n_iter=5, penalty='l2', power_t=0.25,
random_state=None, shuffle=True, verbose=0, warm_start=False)
SGDRegressor(alpha=0.0001, average=False, epsilon=0.1, eta0=0.01,
fit_intercept=True, l1_ratio=0.15, learning_rate='invscaling',
loss='squared_loss', n_iter=5, penalty='l2', power_t=0.25,
random_state=None, shuffle=True, verbose=0, warm_start=False)
SGDRegressor(alpha=0.0001, average=False, epsilon=0.1, eta0=0.01,
fit_intercept=True, l1_ratio=0.15, learning_rate='invscaling',
loss='squared_loss', n_iter=5, penalty='l2', power_t=0.25,
random_state=None, shuffle=True, verbose=0, warm_start=False)
SGDRegressor(alpha=0.0001, average=False, epsilon=0.1, eta0=0.01,
fit_intercept=True, l1_ratio=0.15, learning_rate='invscaling',
loss='squared_loss', n_iter=5, penalty='l2', power_t=0.25,
random_state=None, shuffle=True, verbose=0, warm_start=False)
SGDRegressor(alpha=0.0001, average=False, epsilon=0.1, eta0=0.01,
fit_intercept=True, l1_ratio=0.15, learning_rate='invscaling',
loss='squared_loss', n_iter=5, penalty='l2', power_t=0.25,
random_state=None, shuffle=True, verbose=0, warm_start=False)
SGDRegressor(alpha=0.0001, average=False, epsilon=0.1, eta0=0.01,
fit_intercept=True, l1_ratio=0.15, learning_rate='invscaling',
loss='squared_loss', n_iter=5, penalty='l2', power_t=0.25,
random_state=None, shuffle=True, verbose=0, warm_start=False)
SGDRegressor(alpha=0.0001, average=False, epsilon=0.1, eta0=0.01,
fit_intercept=True, l1_ratio=0.15, learning_rate='invscaling',
loss='squared_loss', n_iter=5, penalty='l2', power_t=0.25,
random_state=None, shuffle=True, verbose=0, warm_start=False)
SGDRegressor(alpha=0.0001, average=False, epsilon=0.1, eta0=0.01,
fit_intercept=True, l1_ratio=0.15, learning_rate='invscaling',
loss='squared_loss', n_iter=5, penalty='l2', power_t=0.25,
random_state=None, shuffle=True, verbose=0, warm_start=False)

我对如何从这里继续前进有点茫然;我希望能够给出所有“输入”值,并在对我的数据集进行训练后接收某种“输出”值的预测。我尝试在网上搜索一些有关此问题的文档,但无法确定具体如何操作。

感谢您的帮助。

最佳答案

首先,您需要将经过训练的模型存储在某处。您可以通过将代码的最后两行替换为以下内容来完成此操作:

models = [clf.fit(base, fact) for fact in facts]

训练模型后,您需要一些输入数据来进行预测。假设您有一些未见过的数据集,名为 unseen_data.csv。假设您拥有该数据并且已将其加载到某个变量 unseen_dataset 中,您可以使用它来进行预测,如下所示:

predicted_facts = [model.predict(unseen_dataset) for model in models]

现在 predicted_facts 将包含您的预测。

您可以在documentation中找到更多详细信息。 .

<小时/>

一些提示:

  • 您应该考虑使用pandas -- 它使处理大型数据集变得更加容易。

  • 您可以通过替换来节省一些打字

    factzero=dataset[:,0]
    factone=dataset[:,1]
    facttwo=dataset[:,2]
    factthree=dataset[:,3]
    factfour=dataset[:,4]
    factfive=dataset[:,5]
    factsix=dataset[:,6]
    factseven=dataset[:,7]
    facts=[factzero,factone,facttwo,factthree,factfour,factfive,factsix,factseven]

    facts = [fact for fact in dataset[:, :8]]

    后者也更容易阅读。

关于python - 如何使用 sklearn 对少数因素和许多训练因素进行回归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42630318/

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