Python线性回归模型:寻找最佳拟合优度

本文将介绍如何使用Python的pandas和Scikit-learn库,通过随机取样和循环迭代,找到线性回归模型的最佳拟合优度(R方),并输出最终的拟合方程。

1. 导入库和模块

首先,我们需要导入所需的库和模块:pythonimport pandas as pdfrom sklearn.linear_model import LinearRegressionfrom sklearn.metrics import r2_scoreimport random

2. 读取数据

使用pandas读取Excel文件中的数据:pythondata = pd.read_excel('会员信息数据.xlsx') data.dropna(inplace=True) # 删除包含缺失值的行

请注意: 将'会员信息数据.xlsx'替换为您的实际文件路径。

3. 定义特征和目标变量pythonX = data[['信誉值均值', '预订任务限额均值', '商品周围商品个数', '会员点个数']]y = data['任务标价']

4. 随机取样和拟合模型

定义一个函数来计算线性回归的拟合优度:pythondef calculate_r2(X, y): model = LinearRegression() model.fit(X, y) y_pred = model.predict(X) r2 = r2_score(y, y_pred) return r2

使用循环不断取样并计算拟合优度,直到找到拟合度大于0.5的样本:pythonrandom.seed(0) # 设置随机数种子r2 = 0while r2 < 0.5: sample_data = data.sample(n=100) X_sample = sample_data[['信誉值均值', '预订任务限额均值', '商品周围商品个数', '会员点个数']] y_sample = sample_data['任务标价'] r2 = calculate_r2(X_sample, y_sample)

5. 输出拟合方程

使用拟合优度最高的样本来训练线性回归模型,并输出拟合方程:pythonmodel = LinearRegression()model.fit(X_sample, y_sample)equation = '任务标价 = 'for i, coef in enumerate(model.coef_): equation += f'{coef:.2f} * {X_sample.columns[i]} + 'equation += f'{model.intercept_:.2f}'print(f'拟合优度(R方):{r2:.4f}')print(f'拟合方程:{equation}')

**完整代码:**pythonimport pandas as pdfrom sklearn.linear_model import LinearRegressionfrom sklearn.metrics import r2_scoreimport random

data = pd.read_excel('会员信息数据.xlsx')data.dropna(inplace=True)

X = data[['信誉值均值', '预订任务限额均值', '商品周围商品个数', '会员点个数']]y = data['任务标价']

def calculate_r2(X, y): model = LinearRegression() model.fit(X, y) y_pred = model.predict(X) r2 = r2_score(y, y_pred) return r2

random.seed(0)r2 = 0while r2 < 0.5: sample_data = data.sample(n=100) X_sample = sample_data[['信誉值均值', '预订任务限额均值', '商品周围商品个数', '会员点个数']] y_sample = sample_data['任务标价'] r2 = calculate_r2(X_sample, y_sample)

model = LinearRegression()model.fit(X_sample, y_sample)equation = '任务标价 = 'for i, coef in enumerate(model.coef_): equation += f'{coef:.2f} * {X_sample.columns[i]} + 'equation += f'{model.intercept_:.2f}'print(f'拟合优度(R方):{r2:.4f}')print(f'拟合方程:{equation}')

注意: - 以上代码仅供参考,您需要根据实际情况修改文件路径和相关参数。- 由于随机取样的特性,每次运行代码得到的结果可能略有不同。

Python线性回归模型:寻找最佳拟合优度

原文地址: https://www.cveoy.top/t/topic/fzTd 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录