import pandas as pd
from sklearn.tree import DecisionTreeRegressor
from sklearn import preprocessing
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import GridSearchCV
# 读取含有热误差数据的CSV文件
file = open('data1.csv',encoding='utf-8')
df = pd.read_csv(file)
# 对数据进行预处理
X = df.iloc[:, :-1] # 输入变量
Y = df.iloc[:, -1] # 输出的热误差值
X_scaled = preprocessing.scale(X) # 对输入变量进行标准化,避免某些维度权值过大或过小
# 划分数据集
X_train, X_test, Y_train, Y_test = train_test_split(X_scaled, Y, test_size=0.2, random_state=72)
# 创建决策树模型
dt = DecisionTreeRegressor()
# 定义网格搜索参数
param_grid = {
'max_depth': [1,2,3,4,5,6,7,8,9],
'min_samples_split': [2, 4, 6],
'min_samples_leaf': [1, 2, 3]
}
# 进行网格搜索优化
grid = GridSearchCV(dt, param_grid, cv=5)
grid.fit(X, Y)
grid_search = GridSearchCV(DecisionTreeRegressor(), param_grid, cv=5)
grid_search.fit(X_train, Y_train)
best_model = grid_search.best_estimator_
# 输出最优参数和模型得分
print('Best Parameters:', grid.best_params_)
# 定义新的温度数据
# 输出预测结果
Y_pred = best_model.predict(X_test)
mse = mean_squared_error(Y_test, Y_pred)
print(f"MSE: {mse:.4f}")
能不能加一点代码增加初始温度以及转速对误差的影响的功能
这个代码能正常运行吗?
# 读取含有热误差数据的CSV文件
file = open('data1.csv',encoding='utf-8')
df = pd.read_csv(file)
# 添加初始温度和转速特征
df['initial_temp'] = [20, 25, 30, 22, 26, 29, 21, 27, 28, 24]
df['speed'] = [1000, 2000, 1500, 1800, 2500, 3000, 1200, 1700, 2200, 1900]
# 对数据进行预处理
X = df.iloc[:, :-1] # 输入变量
Y = df.iloc[:, -1] # 输出的热误差值
X_scaled = preprocessing.scale(X) # 对输入变量进行标准化,避免某些维度权值过大或过小
# 划分数据集
X_train, X_test, Y_train, Y_test = train_test_split(X_scaled, Y, test_size=0.2, random_state=72)
# 创建决策树模型
dt = DecisionTreeRegressor()
# 定义网格搜索参数
param_grid = {
'max_depth': [1,2,3,4,5,6,7,8,9],
'min_samples_split': [2, 4, 6],
'min_samples_leaf': [1, 2, 3]
}
# 进行网格搜索优化
grid = GridSearchCV(dt, param_grid, cv=5)
grid.fit(X, Y)
grid_search = GridSearchCV(DecisionTreeRegressor(), param_grid, cv=5)
grid_search.fit(X_train, Y_train)
best_model = grid_search.best_estimator_
# 输出最优参数和模型得分
print('Best Parameters:', grid.best_params_)
# 输出预测结果
Y_pred = best_model.predict(X_test)
mse = mean_squared_error(Y_test, Y_pred)
print(f"MSE: {mse:.4f}")