使用python进行多元线性回归-基于Tushare获取数据

多元线性回归的定义:

在回归分析中,如果有两个或两个以上的自变量,就称为多元回归。事实上,一种现象常常是与多个因素相联系的,由多个自变量的最优组合共同来预测估计因变量,比只用一个自变量进行预测或估计更有效,更符合实际。因此多元线性回归比一元线性回归的实用意义更大。

导入包和下载数据

import pandas as pd
from sklearn.datasets import load_boston
import statsmodels.formula.api as smf
import tushare as ts
dataset = load_boston()

ts.set_token('your token')
pro = ts.pro_api()

df = pro.bak_daily(start_date='20211012',end_date = '20220610',ts_code='300750.SZ', fields='trade_date,ts_code,name,close,open,vol_ratio,float_mv,total_mv,strength')
df.head()# 查看数据前五行

 

df.describe() # 查看数据特征

 回归方法一:

results = smf.ols('close ~ open + vol_ratio + float_mv + total_mv + strength', data=df).fit()
print(results.summary().tables[1])

results.params # 查看系数

 

 回归方法二:

import statsmodels.api as sm
df1 = df[['open' , 'vol_ratio' , 'float_mv' , 'total_mv' , 'strength']]
df1.head()
X = df1
y = df['close']
model = sm.OLS(y, X)
results = model.fit()
results.params

 回归方法三:

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
# random_state=0随机数种子为0
X_train, X_test, y_train, y_test = train_test_split(df1, df['close'], test_size=0.3, random_state=0)

X_train.shape, X_test.shape, y_train.shape, y_test.shape

model = LinearRegression()
model.fit(X_train, y_train)
model.coef_ # 在sklearn中,所有估计所得的属性,都以下划线"_" 结尾。

 

model.score(X_test, y_test) # 测试集的拟合优度

 0.9999999998567048

pred = model.predict(X_test) # 预测
pred.shape
(49,)
mean_squared_error(y_test, pred) # 测试集的均方误差
r2_score(y_test, pred)
0.9999999998567048
X_train, X_test, y_train, y_test = train_test_split(df1, df['close'], test_size=0.3, random_state=12345)
model = LinearRegression().fit(X_train, y_train)
pred = model.predict(X_test)
mean_squared_error(y_test, pred)
1.954930115309336e-06
r2_score(y_test, pred)# 测试集的R2|
0.9999999997034575
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值