Python 如何提高scikit学习中预测的准确性

Python 如何提高scikit学习中预测的准确性,python,scikit-learn,linear-regression,prediction,train-test-split,Python,Scikit Learn,Linear Regression,Prediction,Train Test Split,我想根据3个特征和1个目标预测一个参数。这是我的输入文件(data.csv): 这是我的密码: import pandas as pd from sklearn.model_selection import train_test_split from collections import * from sklearn.linear_model import LinearRegression features = pd.read_csv('data.csv') features.head()

我想根据3个特征和1个目标预测一个参数。这是我的输入文件(data.csv):

这是我的密码:

import pandas as pd
from sklearn.model_selection import train_test_split
from collections import *
from sklearn.linear_model import LinearRegression

features = pd.read_csv('data.csv')

features.head()
features_name = ['feature.1' , 'feature.2' , 'feature.3']
target_name = ['target']

X = features[features_name]
y = features[target_name]

# Split the data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.1, random_state = 42)

linear_regression_model = LinearRegression()
linear_regression_model.fit(X_train,y_train)

#Here is where I want to predict the target value for these inputs for 3 features
new_data  = OrderedDict([('feature.1',0.375) ,('feature.2',0.375),('feature.3',0.375) ])

new_data = pd.Series(new_data).values.reshape(1,-1)
ss = linear_regression_model.predict(new_data)
print (ss)
根据趋势,如果我为所有功能输入0.375,我希望得到大约0.1875的值。然而,代码预测:

[[0.44203368]]
这是不正确的。我不知道问题出在哪里。有人知道我怎么修吗


谢谢

您的数据不是线性的。由于特征相同,我只绘制了一个维度:


用线性回归模型近似非线性函数会产生糟糕的结果,就像您所经历的那样。您可以尝试为更好的拟合函数建模,并使用scipy拟合其参数:

所有的训练数据点恰好都具有相同的3个特征,因此可能会产生共线问题;如果总是这样的话,你应该去掉所有的特性,只有一个除外。若并没有,你们应该在你们的训练集中包含一些数据点,而这些数据点不符合这个条件……你们的特征中的这种共线性将导致线性回归假设的问题。
[[0.44203368]]