机器学习(3)——有监督学习

目录

1 分类与回归

1.1 k近邻回归

1.2 线性回归模型

2 两个接地特征的线性回归分析

2.1 线性回归

2.2 岭回归

2.3 Lasso回归

2.4 Logistic回归

2.5 线性支持向量机

3 两个接地特征的k近邻分类与回归

3.1 两个接地特征的k近邻分类

3.2 两个接地特征的k近邻回归

3 决策树和随机森林

3.1 决策树

3.2 随机森林

4 机器学习实战:


如果所获得的数据有明确的分类信息,用有明确分类信息的数据训练数据模型,就称为有监督学习(Supervised Learing)。

1 分类与回归

机器学习的目标是对新获得的数据进行分类与回归分类的结果是指数据不具有连续性,如将一堆水果划分为苹果、梨子、香蕉3个类别。回归是数据的一种预测算法。所预测的数据可能具有连续性。在机器学习中经常会提到过拟合、欠拟合、泛化的概念。所建立的数学模型在已有的数据上分类或拟合的结果非常理想,但在新的数据上分类或拟合的效果不佳,即泛化能力弱,这种情况一般称为过拟合。如果所建立的模型在已有数据集上训练或拟合后,分类或拟合效果不好,这种情况成为欠拟合。欠拟合的原因主要是模型建立的太简单所致,泛化能力更差。

1.1 k近邻回归

k近邻回归的本质思想就是给一个训练集,对于新的样本,去寻找训练集中k个与新样本最近的实例。这些实例会归于某类或拟合成一个值。这样,就把新样本也归为某类或拟合成一个值。用于回归的k近邻算法在sklearn.neighbors中的KNeighborsRegressor类中实现。

电力系统中经常会发生单相接地故障,现已积累到一些单相接地故障发生时的特征向量(保存在ground_feature.csv)。当新的向量产生时,用k近邻回归算法看看能否对新的向量进行回归分析。

ground_feature.csv文件获取

链接:https://pan.baidu.com/s/1sNz3RqyiAU7V8djcXVPOtA 
提取码:whj6

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsRegressor
df1 = pd.read_csv('E:\PYTHON\ground_feature.csv') #读取特征向量
data = df1.values
X = data[:,0:3] #构建要分割的数据
y = data[:,3] #构建分类目标
#分割数据集
X_train,X_test,y_train,y_test = train_test_split(X,y,random_state=0)
#将回归模型实例化,将参数邻居个数设置为1
reg = KNeighborsRegressor(n_neighbors=1)
#利用分割的数据计算拟合模型
reg.fit(X_train,y_train)
#对测试集进行预测
print(reg.predict(X_test))

运行结果如下:

[1. 0. 1. 0. 0. 1.]

运行界面如下:

KNeighborsRegressor类回归预测 

利用以下语句可以评估模型得分。看看模型好坏。回归模型好坏主要看决定系数R^{2}的大小,其值越大,回归模型越好。

print('Test set R^2:{:.2f}'.format(reg.score(X_test,y_test)))

运行结果如下:

Test set R^2:1.00

利用以下语句查看系统对新特征向量的回归结果。

gf_new = np.array([[0.57,3.1,9.6]]) #新特征向量
gf_prediction = reg.predict(gf_new) #对新向量进行预测
print(gf_prediction)

运行结果如下:

[1.]

k近邻回归模型很简单,但分类或回归的结果好坏与分类器最重要的参数及相邻点的个数密切相关,我们可以调整n_neighbors的值,通过运行程序看看回归结果的区别。如果特征数很多,样本空间很大,k近邻方法的预测速度会比较慢。

1.2 线性回归模型

W=\begin{bmatrix} W_{0}\\ W_{1}\\ \vdots \\ W_{P} \end{bmatrix},X=\begin{bmatrix} X_{0}\\ X_{1}\\ \vdots \\ X_{P} \end{bmatrix}

W^{T}是W的转置,则线性回归模型可写为:

\hat{y}=W^{T}X+b

当只有一个特征时,线性回归模型退化为直线方程:

\hat{y}=W_{0}X_{0}+b

下面对单相接地线性回归模型进行分析:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
df1 = pd.read_csv('E:\PYTHON\ground_feature.csv') #读取特征向量
data = df1.values
X = data[:,0:3] #构建要分割的数据
y = data[:,3] #构建分类目标
#分割数据集
X_train,X_test,y_train,y_test = train_test_split(X,y,random_state=0)
gf = LinearRegression().fit(X_train,y_train) #训练数据
print('gf.coef_:{}'.format(gf.coef_))
print('gf.intercept_:{}'.format(gf.intercept_))
print('Training set scores: {:.2f}'.format(gf.score(X_train,y_train)))
print('Test set scores: {:.2f}'.format(gf.score(X_test,y_test)))

运行结果如下:

gf.coef_:[ 0.61494852 -0.00442976  0.05630708]
gf.intercept_:-0.32285384955966934
Training set scores: 0.68
Test set scores: 0.84

其中,coef_和intercept_分别为W参数值(权重参数值)和偏移(截距)值。

运行界面如下:

2 两个接地特征的线性回归分析

2.1 线性回归

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值