import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression, Ridge, Lasso, ElasticNet
from sklearn.svm import SVR
from sklearn.neighbors import KNeighborsRegressor
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import RandomForestRegressor, AdaBoostRegressor
from sklearn.preprocessing import PolynomialFeatures
from sklearn.metrics import mean_absolute_error, mean_squared_error
# 设置显示选项
pd.set_option('display.max_columns', None) # 显示完整的列
pd.set_option('display.max_rows', None) # 显示完整的行
# 加载数据集
data = pd.read_csv("carbondatagyh.csv")
# 划分特征和目标变量
X = data.iloc[:, :-1] # 选择所有列,除了最后一列
y = data.iloc[:, -1] # 选择最后一列作为目标变量
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建模型列表
models = [
LinearRegression(),
SVR(),
KNeighborsRegressor(),
Ridge(),
DecisionTreeRegressor(),
ElasticNet(),
RandomForestRegressor(),
Lasso(),
AdaBoostRegressor(),
PolynomialFeatures(degree=2, include_bias=False)
]
# 训练并评估每个模型
for model in models:
if isinstance(model, PolynomialFeatures):
model_name = "Polynomial Regression"
X_train_poly = model.fit_transform(X_train) # 将X_train转换为多项式特征
X_test_poly = model.transform(X_test) # 将X_test转换为多项式特征
regressor = LinearRegression()
regressor.fit(X_train_poly, y_train) # 训练多项式回归模型
train_rmse = mean_squared_error(y_train, regressor.predict(X_train_poly), squared=False) # 计算训练集的RMSE
test_rmse = mean_squared_error(y_test, regressor.predict(X_test_poly), squared=False) # 计算测试集的RMSE
train_mae = mean_absolute_error(y_train, regressor.predict(X_train_poly)) # 计算训练集的MAE
test_mae = mean_absolute_error(y_test, regressor.predict(X_test_poly)) # 计算测试集的MAE
else:
model_name = model.__class__.__name__
model.fit(X_train, y_train) # 训练模型
train_rmse = mean_squared_error(y_train, model.predict(X_train), squared=False) # 计算训练集的RMSE
test_rmse = mean_squared_error(y_test, model.predict(X_test), squared=False) # 计算测试集的RMSE
train_mae = mean_absolute_error(y_train, model.predict(X_train)) # 计算训练集的MAE
test_mae = mean_absolute_error(y_test, model.predict(X_test)) # 计算测试集的MAE
print("Model:", model_name)
print("Train RMSE:", train_rmse)
print("Test RMSE:", test_rmse)
print("Train MAE:", train_mae)
print("Test MAE:", test_mae)
print("-" * 50)
版权归属:
xlove
许可协议:
本文使用《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》协议授权
评论区