Machine learning 线性回归预测不';当我改变单个测试数据时,t改变

Machine learning 线性回归预测不';当我改变单个测试数据时,t改变,machine-learning,scikit-learn,Machine Learning,Scikit Learn,我用scikitlearn做了一个线性模型,每次我都想做一个预测。但是当我改变测试数据时,预测不会改变。我该怎么办 import numpy as np from sklearn.model_selection import train_test_split from sklearn import linear_model from sklearn import preprocessing X = [[1, 55, 207], [0, 0, 65], [2, 8, 67], [2, 31, 2

我用scikitlearn做了一个线性模型,每次我都想做一个预测。但是当我改变测试数据时,预测不会改变。我该怎么办

import numpy as np
from sklearn.model_selection import train_test_split
from sklearn import linear_model
from sklearn import preprocessing

X = [[1, 55, 207], [0, 0, 65], [2, 8, 67], [2, 31, 270], [0, 5, 73], [0, 2, 98], [0, 0, 65], [0, 0, 115], [2, 0, 65], [2, 0, 67], [2, 7, 64], [2, 7, 66], [2, 10, 67], [2, 7, 66], [2, 9, 67], [3, 0, 115], [1, 3, 67], [1, 0, 51], [0, 0, 17], [2, 7, 68], [2, 8, 67], [2, 7, 67], [2, 16, 0], [1, 16, 45], [2, 11, 80], [2, 9, 78], [1, 8, 67], [0, 0, 43], [0, 0, 47], [2, 0, 72], [0, 0, 41], [0, 0, 43], [0, 0, 115], [0, 0, 361], [0, 0, 50], [0, 0, 43], [1, 15, 54], [0, 0, 43], [2, 0, 63], [1, 0, 56], [0, 0, 58], [0, 0, 45], [0, 0, 165], [3, 0, 115], [0, 0, 52], [0, 0, 67]]

y = [1690000000, 360000000, 400000000, 4860000000, 460000000, 640000000, 370000000, 1000000000, 360000000, 340000000, 400000000, 390000000, 375000000, 390000000, 375000000, 977500000, 800000000, 331500000, 350000000, 370000000, 370000000, 370000000, 380000000, 185000000, 300000000, 750000000, 301500000, 117000000, 155000000, 310000000, 2170000000, 116000000, 345000000, 1700000000, 287000000, 160000000, 235000000, 217000000, 215000000, 172000000, 312000000, 277000000, 1200000000, 977500000, 240000000, 340000000]


means = list(map(lambda x: sum(x)/float(len(x)), zip(*X)))
new_y = []
for i in range(len(X)):

    new_y.append(np.log(y[i]))
    if X[i][1] == 0:
        X[i][1] = means[1]
    if X[i][2] == 0:
        X[i][2] = means[2]
    if X[i][0] == 0 and X[i][1] < 60:
        X[i][0] = 1
    elif X[i][0] == 0 and X[i][1] < 120:
        X[i][0] =2
    elif  X[i][0] == 0 and X[i][1] > 120:
        X[i][0] = 2.5


X = preprocessing.scale(X)
X_train, X_test, y_train, y_test = train_test_split(X, new_y, test_size=0.30, random_state=5)

model = linear_model.Ridge(alpha=0.1)
model.fit(X_train, y_train)
my_x = [[2, 5, 120]]
my_x = preprocessing.scale(my_x)

prediction = model.predict(my_x)
prediction = np.exp(prediction)
print(int(prediction))
将numpy导入为np
从sklearn.model\u选择导入列车\u测试\u拆分
从sklearn导入线性_模型
从sk学习导入预处理
[1,55,207[1,55,55,2070[1,55,2070[1,0 0,55,2070[1[1,55[1,5,73[0,2,2,2,5,5 5,98[0,0,0,0,0,0,0,0,55[1,55,0,0,0,55,0,5,0,55,(5,55[1,55[1,55,55,55,55,55,55,55,55,55,5,55,55,5 5,5,5,5 5,5,5,5,0,5,0,0,0,0,0,0,0,0,0 0,0,0,115[0,0,115][[0,0,0,0,0,0,0,0,0,115[0,115][[0 0,0 0,0,0,0,0,115][[0,0,0,0,0,115][[2 67],[0,0,43], [0, 0, 47], [2, 0, 72], [0, 0, 41], [0, 0, 43], [0, 0, 115], [0, 0, 361], [0, 0, 50], [0, 0, 43], [1, 15, 54], [0, 0, 43], [2, 0, 63], [1, 0, 56], [0, 0, 58], [0, 0, 45], [0, 0, 165], [3, 0, 115], [0, 0, 52], [0, 0, 67]]
y=[1690000000, 360000000, 400000000, 4860000000, 460000000, 640000000, 370000000, 1000000000, 360000000, 340000000, 400000000, 390000000, 375000000, 390000000, 375000000, 977500000, 800000000, 331500000, 350000000, 370000000, 370000000, 370000000, 380000000, 185000000, 300000000, 750000000, 301500000, 117000000, 155000000, 310000000, 2170000000, 116000000, 345000000, 1700000000, 287000000, 160000000, 235000000, 217000000, 215000000, 172000000, 312000000, 277000000, 1200000000, 977500000, 240000000, 340000000]
平均数=列表(映射(λx:sum(x)/float(len(x)),zip(*x)))
新的_y=[]
对于范围内的i(len(X)):
新的y.append(np.log(y[i]))
如果X[i][1]==0:
X[i][1]=指[1]
如果X[i][2]==0:
X[i][2]=指[2]
如果X[i][0]==0且X[i][1]<60:
X[i][0]=1
elif X[i][0]==0和X[i][1]<120:
X[i][0]=2
elif X[i][0]==0和X[i][1]>120:
X[i][0]=2.5
X=预处理。比例(X)
X_序列,X_测试,y_序列,y_测试=序列测试分割(X,新y,测试大小=0.30,随机状态=5)
模型=线性\模型脊(α=0.1)
模型拟合(X\U系列、y\U系列)
my_x=[[2,5120]]
my_x=预处理.scale(my_x)
预测=模型。预测(my_x)
预测=np.exp(预测)
打印(整数(预测))
输出是385349681,对于my_x=[[2,5270]],输出也是385349681。
这是46栋房子的数据。y是价格,X包括房间数量、楼龄和建筑面积。

我得到了它。这是因为对我的测试数据进行了预处理。它使我的X都为零

my_x = [[2, 5, 120]]
my_x = preprocessing.scale(my_x)

您发布的代码不完整,因此我们很难看到它到底出了什么问题。这可能与调用的顺序函数有关。您能否提供完整的代码?抱歉,我刚刚发布了完整的代码。