【问题标题】:Machine Learning on Body-Brain prediction dataset体脑预测数据集的机器学习
【发布时间】:2017-11-05 01:01:53
【问题描述】:

我有单独的训练和测试数据集,其中包含有关大脑和体重的信息。我想做的是在从训练数据集中学习后,通过测试数据集中给定的体重来预测测试数据集中的脑重。我已经完成了linear regression,但数据没有给出可接受的结果,因为数据分布不顺畅。

我们如何使用scikit-learn 训练“训练数据集”以预测测试数据集的单列?下面的数组仅用于演示。

    Training['Brain'] = [3.385, .480, 1.350, 465.00,36.330, 27.660, 14.830, 1.040, 4.190, 0.425, 0.101, 0.920, 1.000, 0.005, 0.060, 3.500 ]

    Training['Body'] = [44.500, 15.5, 8.1, 423, 119.5, 115, 98.2, 5.5,58, 6.40, 4, 5.7,6.6, 140,1, 10.8] 

    Test['Brain'] = [192.000,3.000,160.000,0.900,1.620,0.104,4.235]
    Test['Body'] = [180.000,25.000,169.000,2.600,11.400,2.500,50.400]




import pandas as pd
import matplotlib.pyplot as plt
from scipy import stats



training = pd.read_csv('C:\\training.csv', index_col='Index')

test = pd.read_csv('C:\\test.csv', index_col='Index')


train_x = training['Brain']
train_y = training['Body']

slope, intercept, r_value, p_value, std_err = stats.linregress(train_x, train_y)


fig, ax = plt.subplots(figsize=(20,10))
plt.axis([-10, 600, -10, 700])

plt.plot(train_x, train_y, 'ro', color='blue')
plt.ylabel('Body')
plt.xlabel('Brain')

plt.plot(train_x, train_x*slope+intercept, 'black')

plt.plot()
plt.show()



newX = test['Body']



newY = newX * slope+intercept

print(newX)
print(newY)
print(std_err)

【问题讨论】:

  • 将您的代码添加到问题中,看看您尝试了什么,并给我们一个帮助您的起点。
  • 问题已编辑。 @Nic3500

标签: python scikit-learn prediction


【解决方案1】:

我建议你不要给数据扔任何随机算法,因为你问我想发表我的意见。您应该选择正确的算法以获得良好的结果。同时我这里以线性回归为例,其他算法也可以进行类似的预测。 所有输入都应为数组形状。

Test_x=np.array(Test['Brain']).reshape(-1, 1) Test_y=np.array(Test['Body']).reshape(-1, 1) Train_x=np.array(Train['Brain']).reshape(-1, 1) Train_y=np.array(Train['Body']).reshape(-1, 1)

from sklearn.linear_model import LinearRegression

LinReg=LinearRegression()

LinReg.fit(Train_x,Train_y)
LinReg.predict(Test_x)

还根据您的评论:是的,您尝试从数据集中删除异常值,然后您可以拟合多项式曲线。我在去除异常值后附加曲线。您可以看到非线性趋势。 图:1 有异常值- 图:2 没有异常值-

【讨论】:

  • 用逻辑回归怎么办?因为数据的分布不适合线性,它可能更准确地估计逻辑一..?
  • 我已经扩展了答案。如果您需要更多帮助,请询问。
  • 感谢您提供的数据。我需要的是在训练数据集上绘制逻辑回归并预测测试数据集中的全脑值,加上 r 平方(模型解释的百分比)和置信区间。我试过的代码如下。在 model.fit(X, y) 上给出错误“ValueError: Unknown label type: 'continuous'”。
  • from sklearn.linear_model import LogisticRegression import pandas as pd import numpy as np import matplotlib.pyplot as plt training = pd.read_csv('C:\\training.csv') Test = pd.read_csv( 'C:\\test.csv') y = np.array(training['Brain']).reshape(-1,1) X = np.array(training['Body']).reshape(-1, 1) test_y = np.array(Test['Brain']).reshape(-1, 1) test_x = np.array(Test['Body']).reshape(-1, 1) model = LogisticRegression() 模型.fit(X, y) model.score(X, y) print('系数: \n', model.coef_) print('截距: \n', model.intercept_) predict=model.predict(test_y)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-04
  • 2017-06-05
  • 1970-01-01
  • 2018-08-18
  • 1970-01-01
  • 2023-03-04
  • 2019-08-24
相关资源
最近更新 更多