设为首页 加入收藏

TOP

监督学习笔记(二)
2017-12-24 06:07:04 】 浏览:984
Tags:监督 学习 笔记
oder() # 2、给出标记 input_classes=['abc','egf','opq','rst','bcd','cde'] # 3、为标记编码,按第一个字母顺序为标记排编号,从0开始 label_encoder.fit(input_classes) for i,item in enumerate(label_encoder.classes_): print(item,'->',i) # 4、转换标记,将给出的标记变为排序标号 label=['rst','opq','abc','rst','opq','abc'] encoded_labels=label_encoder.transform(label) print(label,encoded_labels) # 5、反转标记,将给出的数字,对应出标记 encoded_label=[4,3,2,4,1] labels=label_encoder.inverse_transform(encoded_label) print(encoded_label,labels)

3、线性回归器

import numpy as np
# 创建线性回归器 目的:提取输入变量与输出变量的关联线性模型,可以使得实际输出与线性方程预
# 测的输出的差平方和(sum of squares of differences)最小化,该方法称普通最小二乘法(Ordinary Least Squares,OLS)
# 1、获取数据并解析数据到变量X和Y中
X=[]
Y=[]
with open('data_singlevar.txt','r') as f:
    for line in f.readlines():
        data = [float(i) for i in line.split(',')]
        xt,yt=data[:-1],data[-1]
        X.append(xt)
        Y.append(yt)
# 2、将数据分为训练集和测试集,各为80%,20%
num_training=int(0.8*len(X))
num_test=len(X)-num_training

X_training=np.array(X[0:num_training])
Y_training=np.array(Y[0:num_training])

X_test=np.array(X[num_training:])
Y_test=np.array(Y[num_training:])

# 3、创建回归器对象
from sklearn import linear_model
linear_regressor=linear_model.LinearRegression()
linear_regressor.fit(X_training,Y_training)#训练
# 4、获取预测数据,并将其显示
import matplotlib.pyplot as plot
y_train_pred=linear_regressor.predict(X_training)
plot.figure()
plot.scatter(X_training,Y_training,color='green')
plot.plot(X_training,y_train_pred,color='black')
plot.title('数据显示')
plot.show()
# 5、验证测试数据,并显示

y_test_pred=linear_regressor.predict(X_test)
plot.figure()
plot.scatter(X_test,Y_test,color='green')
plot.plot(X_test,y_test_pred,color='black')
plot.title('数据显示')
plot.show() 

4、计算回归准确性

评价回归器的拟合效果,简述几个衡量回归器效果的重要指标(metric):

  • 平均绝对误差(mean absolute error):所有数据点的绝对误差平均值。
  • 均方误差(mean squared error):所有点的误差的平方的平均值(常用)。
  • 中位数军队误差(median absolute error):所有点的误差的中位数。优点是可以消除异常值的干扰
  • 解释方差分(explained variance acore):用于衡量模型对数据集波动的解释能力。
  • R方得分(R2 score):确定性关系系数,用于衡量模型对未知样本预测的效果,最好1.0,值也可负数。
    scikit-learn里面有一块模块,提供了计算所有指标的功能。

    import sklearn.metrics as sm
    
    print('平均绝对误差:',round(sm.mean_absolute_error(Y_test,y_test_pred)))
    print('均方误差:',round(sm.mean_squared_error(Y_test,y_test_pred)))
    print('中位数绝对误差:',round(sm.median_absolute_error(Y_test,y_test_pred)))
    print('解释方差分:',round(sm.explained_variance_score(Y_test,y_test_pred)))
    print('R方得分:',round(sm.r2_score(Y_test,y_test_pred)))

    通常尽量保证均方误差最低,而解释方差分最高

5、保存模型

模型训练结束之后,为下次使用方便,可以保存模型。

# 保存模型
import pickle  as p
with open('saved_model_output.pkl','wb') as f:
    p.dump(linear_regressor,f)
#加载模型,加载的便是linear_regressor
with open('saved_model_output.pkl','rb') as f:
    model_liner=p.load(f)
y_pre=model_liner.predict(X_test)

6、岭回归器

普通最小二乘法在建模时会考虑异常值的影响,所以使得模型不是最优,这里引入正则化项的系数作为阙值来消除异常值影响,该方法称岭回归

#alpha趋于0时,岭回归器就是普通最小乘法的线性回归器,若希望对异常值不敏感,设为大一点
ridge_regressor=linear_model.Ridge(alpha=1,fit_intercept=True,max_iter=10000)
ridge_regressor.fit(X_training,Y_training)
y_test_pred_ridge=ridge_regressor.predict(X_test)
plot.figure()
plot.scatter(X_test,Y_test,color='green')
plot.plot(X_test,y_test_pred_ridge,color='black')
plot.title('train数据显示')
plot.show()

print('平均绝对误差:',round(sm.m
首页 上一页 1 2 3 4 下一页 尾页 2/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Python2.7.14安装和pip配置安装及.. 下一篇python 初学之账户登录

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目