侧边栏壁纸
  • 累计撰写 35 篇文章
  • 累计创建 16 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

【Python】全部回归

xlove
2023-07-06 / 0 评论 / 0 点赞 / 387 阅读 / 486 字
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)

0

评论区