欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

基于python的留一法+多元线性回归2021-05-13

程序员文章站 2022-05-04 16:40:07
...

用python进行简单的多元线性回归预测,这里是用性别、体重两个特征预测性别。新手,仅记录,欢迎指导。

划分数据集用的LOO,直接导的包做的。

import pandas as pd    #  导入Python的数据处理库pandas,相当于Python里的excel
import numpy as np    # 导入Python的数据处理库numpy
data = pd.read_csv('biyelunwen.csv',encoding='gbk')

# 把data转成一个个的数组,不做这一步直接输data[:,0:2],就会报错
A=np.array(data)
X=A[:,0:2]
y=A[:,2]

# 导入线性回归、LOO模块
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import LeaveOneOut
loo=LeaveOneOut()
lin_reg=LinearRegression()


# loo交叉验证法循环
right=0
for train,test in loo.split(data):
    X_train,X_test=X[train],X[test]
    y_train,y_test=y[train],y[test]
    # 训练和预测
    lin_reg.fit(X_train,y_train)    
    y_test_pred=lin_reg.predict(X_test)
    
    if y_test_pred >0.5:
        y_test_pred=1
    else:
        y_test_pred=0
        
    if y_test_pred==y_test:
        right=right+1
    else:
        right=right+0

acc=right/X.shape[0]
print('准确率={:.2f}%'.format(acc*100))
    
# 显示斜率
w = lin_reg.coef_
print("自变量x的系数w为: ", np.round(w,4))
#np.round保留小数点设置

# 显示截距
b = lin_reg.intercept_
print("常数项(截距)为: ", np.round(b,4))

 最后结果:

准确率=84.00%
自变量x的系数w为:  [0.0343 0.0119]
常数项(截距)为:  -6.0384