05数据分析

该文利用Python的sklearn库进行线性回归分析,基于国内铁精粉价格、下游钢材产量和价格等自变量,预测公司铁精粉的销售价格。通过训练集和测试集划分,计算模型的均方误差(MSE)和决定系数(R2),并可视化预测结果,最后保存模型和回归系数。
摘要由CSDN通过智能技术生成

'''
利用线性回归算法建立模型
自变量:国内市场铁精粉价格 下游钢材产量 下游钢材价格
因变量:公司铁精粉销售价格
'''

#导入Python库
import pandas as pd
from sklearn.model_selection import train_test_split  
from sklearn import metrics
from sklearn.linear_model import LinearRegression
import joblib
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] 
plt.rcParams['axes.unicode_minus'] = False   

#读取数据
df=pd.read_excel('产品价格预测/数据结果/数据清洗结果.xlsx')
print(df.head(n=1))

#数据集拆分
X = df.drop(columns=['日期', '公司铁精粉销售价格'])
column_name = X.columns  
y = df['公司铁精粉销售价格']
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.8, test_size=0.2, random_state=123)

#建立模型
lr = LinearRegression()
#训练模型
lr.fit(X_train, y_train)
#模型评估
y_pred = lr.predict(X_test)
mse_value = metrics.mean_squared_error(y_test, y_pred)
print('均方误差MSE:', mse_value)
r2_score_value = metrics.r2_score(y_test, y_pred)
print('决定系数R2:', r2_score_value)
#可视化
plt.figure(figsize=(16,9), dpi=80)
x_index = range(1, len(y_test) + 1)
plt.plot(x_index, y_test,linestyle='-', marker='s', color='orangered', label="真实值", linewidth=2)  # s-:方形
plt.plot(x_index, y_pred, linestyle='-', marker='o', color='dodgerblue', label="预测值", linewidth=2)  # o-:圆形
plt.ylabel("价格", fontsize=16) 
plt.legend(loc="best")  
plt.xticks([]) 
plt.savefig('产品价格预测/数据结果/模拟值与测试值的关系.png')
plt.show()
#保存模型
joblib.dump(lr,'产品价格预测/数据结果/价格预测模型.pkl')
#保存回归系数
df_weight = pd.DataFrame({'特征': column_name, 'importance': np.round(lr.coef_, 3)})
print(df_weight)
df_weight.to_excel('产品价格预测/数据结果/回归系数.xlsx', index=False, encoding='utf-8-sig')
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值