Python 当预测值相同时,列车试验分割影响结果

Python 当预测值相同时,列车试验分割影响结果,python,scikit-learn,Python,Scikit Learn,我是数据科学新手,我有一个关于train\u test\u split的问题 我举了一个例子,试图通过温度来预测冰茶的销量 我的问题是,当我使用train\u test\u split时,我的mse、得分和预测销售值每次都会不同(因为train\u test\u split每次都选择不同的零件) 这正常吗?如果用户每次输入30度相同的值,他们将得到不同的预测销售值 import numpy as np from sklearn.linear_model import LinearRegressi

我是数据科学新手,我有一个关于
train\u test\u split
的问题

我举了一个例子,试图通过温度来预测冰茶的销量

我的问题是,当我使用
train\u test\u split
时,我的mse、得分和预测销售值每次都会不同(因为
train\u test\u split
每次都选择不同的零件)

这正常吗?如果用户每次输入30度相同的值,他们将得到不同的预测销售值

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

#1. predict value
temperature = np.reshape(np.array([30]), (1, 1))

#2. data
X = np.array([29, 28, 34, 31, 25, 29, 32, 31, 24, 33, 25, 31, 26, 30]) #temperatures
y = np.array([77, 62, 93, 84, 59, 64, 80, 75, 58, 91, 51, 73, 65, 84]) #iced_tea_sales

X = np.reshape(X, (len(X), 1))
y = np.reshape(y, (len(y), 1))

#3. split data
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)

#4. train
lm = LinearRegression()
lm.fit(X_train, y_train)

#5. mse score
y_pred = lm.predict(X_test)
mse = np.mean((y_pred - y_test) ** 2)
r_squared = lm.score(X_test, y_test)

print(f'mse: {mse}')
print(f'score(r_squared): {r_squared}')

#6. predict
sales = lm.predict(temperature)
print(sales) #output, user get their prediction

这些值永远不会与拟合任何模型时的值相同(),即使在同一数据上多次拟合,学习到的权重也可能不同,因此预测永远不会相同。不过,它们应该足够接近(如果没有异常值),因为样本来自的分布是常见的。

1还有一个问题,我是否应该不断添加/更新数据框并对其进行调整以改进模型?否!!不断更改数据不会让您知道哪种模型性能更好。每当调整参数时,必须始终保持数据不变。如果我不更新新数据,我如何改进我的机器学习,这个模型在10年后可能不准确。考虑这个。假设您希望为某些分类部署一个模型。然后,在决定该特定时间的模型时,您将测试多个模型,参数。正当在比较多个模型时,请使用常量数据集。假设您观察到您的模型性能不好。这可能意味着分布发生了变化。现在要更新模型,您将再次从更改的分布创建一个常量数据集,并检查多个模型