sklearn系列之----线性回归

原理

线性回归,原理很简单,就是拟合一条直线使得损失最小,损失可以有很多种,比如平方和最小等等;

y是输出,x是输入,输出是输入的一个线性组合。

系数矩阵就是coef,截距就是intercept;

例子:

我们的输入和输出是numpy的ndarray,输入是类似于列向量的,输出类似于行向量,看它们各自的shape就是: 输出:y.shape ——>(1,) 输入:x.shape——->(m,1) #m是一个数字 大家记得不要把形式弄错啦,不然可就走不起来了;

下面是个最简单的例子:

>>> from sklearn import linear_model #导入线性模型
>>> clf = linear_model.LinearRegression() #使用线性回归
>>> clf.fit ([[0, 0], [1, 1], [2, 2]], [0, 1, 2]) #对输入和输出进行一次fit,训练出一个模型
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)
>>> clf.coef_  #系数矩阵
array([ 0.5,  0.5])

稍微复杂点的例子:

import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets, linear_model

# 读取自带的diabete数据集
diabetes = datasets.load_diabetes()


# 使用其中的一个feature
diabetes_X = diabetes.data[:, np.newaxis, 2]

# 将数据集分割成training set和test set
diabetes_X_train = diabetes_X[:-20]
diabetes_X_test = diabetes_X[-20:]

# 将目标(y值)分割成training set和test set
diabetes_y_train = diabetes.target[:-20]
diabetes_y_test = diabetes.target[-20:]

# 使用线性回归
regr = linear_model.LinearRegression()

# 进行training set和test set的fit,即是训练的过程
regr.fit(diabetes_X_train, diabetes_y_train)

# 打印出相关系数和截距等信息
print('Coefficients: \n', regr.coef_)
# The mean square error
print("Residual sum of squares: %.2f"
      % np.mean((regr.predict(diabetes_X_test) - diabetes_y_test) ** 2))
# Explained variance score: 1 is perfect prediction
print('Variance score: %.2f' % regr.score(diabetes_X_test, diabetes_y_test))

# 使用pyplot画图
plt.scatter(diabetes_X_test, diabetes_y_test,  color='black')
plt.plot(diabetes_X_test, regr.predict(diabetes_X_test), color='blue',
         linewidth=3)

plt.xticks(())
plt.yticks(())

plt.show()

可以看出,使用还是很简单的,就是准备好数据集:

regr = linear_model.LinearRegression() #使用线性回归
regr.fit(diabetes_X_train, diabetes_y_train) #训练获得一个model
regr.predict(diabetes_X_test) # 预测
regr.score(diabetes_X_test, diabetes_y_test) # 获取模型的score值

OK,就到这,下次继续!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏郭耀华‘s Blog

1×1卷积的用途(Network in Network)

1×1卷积,又称为Network in Network ? 如果卷积的输出输入都只是一个平面,那么1x1卷积核并没有什么意义,它是完全不考虑像素与周边其他像...

9857
来自专栏ACM算法日常

第十二篇:《机器学习之神经网络(实战篇)》

774
来自专栏机器学习算法工程师

干货|(DL~2)一看就懂的卷积神经网络

文章来自:https://leonardoaraujosantos.gitbooks.io 作者:Leonardo Araujo dos Santos

861
来自专栏PPV课数据科学社区

TensorFlow基本操作 实现卷积和池化

之前已经提到过图像卷积的操作和意义,并且用OpenCV中的filter2D函数实现了一些例子。OpenCV中的filter2D函数仅仅是用一个卷积核去卷积单个的...

842
来自专栏机器学习原理

机器学习(3)——回归模型目标函数多项式扩展正则项机器学习调参

前言:紧接上一篇文章结尾,预测值和真实值存在较大差距,接着介绍用多项式权重来提高拟合度(R2),过拟合解决办法,引出正则项L1和L2,Ridge回归和LASSO...

3405
来自专栏机器学习、深度学习

人脸检测-- Face R-FCN + Face R-CNN

Detecting Faces Using Region-based Fully Convolutional Networks 本文使用 R-FCN 来进行人脸...

4026
来自专栏量化投资与机器学习

深度学习Matlab工具箱代码注释之cnnbp.m

%%========================================================================= %...

1985
来自专栏Pytorch实践

Pytorch实现Logistic回归二分类

? 摘要:本文主要介绍使用深度学习框架Pytorch实现简单的Logistic回归模型,进而实现简单的分类问题。 一.逻辑回归简述 逻辑回归实质上是线性回...

1K14
来自专栏奇点大数据

再免费多看一章--knn

算法很简单,对待分类样本实施近邻投票。其中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别。 ? 在《白话大数据与机器学习》里使用了sklea...

3377
来自专栏编程

CNN之文本分类之网络结构

本文主要是基于Yoon Kim的Convolutional Neural Networks for Sentence Classification,用中文重新梳...

2246

扫码关注云+社区