机器学习~从入门到精通(二)线性回归算法和多元线性回归

这篇具有很好参考价值的文章主要介绍了机器学习~从入门到精通(二)线性回归算法和多元线性回归。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

为什么要做数据归一化

一、数据归一化:

1.最值归一化
2.均值方差归一化
import numpy as np

X = np.random.randint(1,100,size=100)
X = X.reshape(-1,2)
X.shape
X = np.array(X,dtype='float')
X[:,0] = (X[:,0]-np.min(X[:,0]))/(np.max(X[:,0])-np.min(X[:,0]))
X[:,1] = (X[:,1]-np.min(X[:,1]))/(np.max(X[:,1])-np.min(X[:,1]))
X

机器学习~从入门到精通(二)线性回归算法和多元线性回归,开发,算法,机器学习,线性回归

均值方差归一化

X = np.random.randint(1,100,size=100)
X = X.reshape(-1,2)
X = np.array(X,dtype='float')
X[:,0] = (X[:,0]-np.mean(X[:,0]))/np.std(X[:,0])
X[:,1] = (X[:,1]-np.mean(X[:,1]))/np.std(X[:,1])
X
np.std(X[:,0])
np.std(X[:,1])
np.mean(X[:,0])
np.mean(X[:,1])

机器学习~从入门到精通(二)线性回归算法和多元线性回归,开发,算法,机器学习,线性回归

二、数据归一化的注意事项

import numpy as np

X = np.random.randint(1,100,size=100).reshape(-1,1)
X1 = np.array(X,dtype='float')

from sklearn.preprocessing import StandardScaler
std_scaler = StandardScaler()

std_scaler.fit(X1) # 计算均值和方差
X_std = std_scaler.transform(X1)  # 归一化转化
X_std

机器学习~从入门到精通(二)线性回归算法和多元线性回归,开发,算法,机器学习,线性回归

三、鸢尾花数据归一化

import numpy as np
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler

iris = load_iris()
X= iris.data
y = iris.target
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2)
X_train.shape
std_scaler = StandardScaler()
std_scaler.fit(X_train)
std_scaler.mean_.shape
X_std_train = std_scaler.transform(X_train) #  对训练集特征进行归一化处理
X_std_test =  std_scaler.transform(X_test)  #  对测试集特征进行归一化处理
from sklearn.neighbors import KNeighborsClassifier

knn_clf = KNeighborsClassifier()
knn_clf.fit(X_std_train,y_train)
knn_clf.score(X_std_test,y_test)
knn_cl1 = KNeighborsClassifier()
knn_cl1.fit(X_train,y_train)
knn_cl1.score(X_test,y_test)

机器学习~从入门到精通(二)线性回归算法和多元线性回归,开发,算法,机器学习,线性回归

四、knn算法总结

#  knn: 天然可以解决分类的算法
#        思想简单,效果强大
#  缺点: 效率很低 
#  缺点: 高度数据相关outlier
#  缺点: 预测的结果不具有可解释性
#  缺点: 维数灾难: 随着维度的增加,看似很相近的点,之间的距离会越来越大

五、线性回归

#  线性回归:判断数据的特征和目标值之间具有一定的线性关系
#  最简单的线性回归:样本的特征只有一个,用线性回归法进行预测,叫做简单线性回归
#  推广到样本特征有多个,多元线性回归
#  实现简单,是很多非线性模型的基础
#  结果具有很强的解释性,可以学习到一些真实世界中的知识
#   np.sum(|y` - y| )
#   np.sum((y` - y)**2)
#   损失函数
import numpy as np
import matplotlib.pyplot as plt
x = np.array([1,2,3,4,5])
y = np.array([1,3,2,3,5])
plt.scatter(x,y)
plt.axis([0,6,0,6])
plt.show()

机器学习~从入门到精通(二)线性回归算法和多元线性回归,开发,算法,机器学习,线性回归

#  y = a*x+b  需要计算出a和b
x_mean = np.mean(x)
y_mean = np.mean(y)
num = 0.0 # 分子
d = 0.0  #  分母
for x_i,y_i in zip(x,y):
    num += (x_i-x_mean)*(y_i-y_mean)
    d += (x_i-x_mean)**2
a = num/d
b = y_mean-a*x_mean
a
b
y_hat = a * x +b
plt.plot(x,y_hat,color='r')
plt.scatter(x,y)
plt.axis([0,6,0,6])
plt.show()

机器学习~从入门到精通(二)线性回归算法和多元线性回归,开发,算法,机器学习,线性回归
机器学习~从入门到精通(二)线性回归算法和多元线性回归,开发,算法,机器学习,线性回归

x_predict = 3.5
a*x_predict+b
%run MechainLearning/SimpleLinearRegression.py
lin_reg = SimpleLinearRegression()
lin_reg.fit(x,y)
lin_reg.predict()

机器学习~从入门到精通(二)线性回归算法和多元线性回归,开发,算法,机器学习,线性回归

SimpleLinearRegression.py

import numpy as np


class SimpleLinearRegression:
    def __init__(self):
        self.a_ = None
        self.b_ = None
        self.x_mean = None
        self.y_mean = None

    def fit(self, x_train, y_train):
        self.x_mean = np.mean(x_train)
        self.y_mean = np.mean(y_train)
        num = 0.0  # 分子
        d = 0.0  # 分母
        for x_i, y_i in zip(x_train, y_train):
            num += (x_i - self.x_mean) * (y_i - self.y_mean)
            d += (x_i - self.x_mean) ** 2
        self.a = num / d
        self.b = self.y_mean - self.a * self.x_mean
        return self

    def predict(self, x_test):
        return self.a * x_test + self.b

moduel_selection.py

import numpy as np


def train_test_split(X, y, test_ratio=0.2, random_state=None):
    if random_state:
        np.random.seed(random_state)
    shuffle_indexs = np.random.permutation(len(X))
    test_ratio = test_ratio
    test_size = int(len(X) * test_ratio)

    test_indexs = shuffle_indexs[:test_size]
    train_indexs = shuffle_indexs[test_size:]
    X_train = X[train_indexs]
    y_train = y[train_indexs]


    X_test = X[test_indexs]
    y_test = y[test_indexs]
    return X_train, X_test, y_train, y_test

from sklearn.neighbors import KNeighborsClassifier

knn = KNeighborsClassifier()

draft.py

import random

random.seed(666)
print(random.random())
print(random.random())
print(random.random())

def random(num):
    pass

六、简单线性回归

# 前提:认为数据具有一定的线性关系
#  希望找到一条最佳拟合的直线方程,只针对简单线性回归(只有一个特征值)
#  y = ax+b    对于每一个样本点,在这个直线方程上都有一个预测值,预测值和真实值有一定的差距
#   我们希望这些样本到直线方程的差距之和最小

#  如何计算这些差距?  |y-y~|   sqrt((y-y~)**2)
#  loss function 损失函数  希望损失函数达到最小值
from sklearn.linear_model import LinearRegression
import numpy as np
import matplotlib.pyplot as plt
x = np.array([1,2,3,4,5])
y = np.array([1,3,2,3,5])
plt.scatter(x,y)
plt.axis([0,6,0,6])
plt.show()

机器学习~从入门到精通(二)线性回归算法和多元线性回归,开发,算法,机器学习,线性回归

lin_reg = LinearRegression()
lin_reg.fit(x.reshape(-1,1),y)
lin_reg.coef_ # 系数
lin_reg.intercept_  # 截距
plt.scatter(x,y)
plt.plot(x,lin_reg.predict(x.reshape(-1,1)),color='r')
plt.axis([0,6,0,6])
plt.show()

机器学习~从入门到精通(二)线性回归算法和多元线性回归,开发,算法,机器学习,线性回归

def lin_fit(x,y):
    x_mean = np.mean(x)
    y_mean = np.mean(y)
    num = 0.0
    d = 0.0
    for i in range(len(x)):
        num+=(x[i]-x_mean)*(y[i]-y_mean)
        d+=(x[i]-x_mean)**2
    a = num/d
    b = y_mean-a*x_mean
    return a,b

lin_fit(x,y)

def lin_fit2(x,y):
    x_mean = np.mean(x)
    y_mean = np.mean(y)
    num = 0.0
    d = 0.0
#     for i in range(len(x)):
#         num+=(x[i]-x_mean)*(y[i]-y_mean)
#         d+=(x[i]-x_mean)**2
    num = (x-x_mean).dot(y-y_mean)
    d = (x-x_mean).dot(x-x_mean)
    a = num/d
    b = y_mean-a*x_mean
    return a,b

lin_fit2(x,y)
x.shape
y.shape
机器学习~从入门到精通(二)线性回归算法和多元线性回归,开发,算法,机器学习,线性回归

七、线性回归模型评优

from sklearn.linear_model import LinearRegression
import numpy as np
import matplotlib.pyplot as plt

x = np.array([1,2,3,4,5])
y = np.array([1,3,2,3,5])

lin_reg = LinearRegression()
lin_reg.fit(x.reshape(-1,1),y)

lin_reg.score(x.reshape(-1,1),y)

机器学习~从入门到精通(二)线性回归算法和多元线性回归,开发,算法,机器学习,线性回归

线性回归模型中的误差计算

MSE mean squared error 均方误差

#  为什么均方误差中需要除以样本数量m 

def MSE(y_true,y_predict):
    return np.sum((y_true-y_predict)**2)/len(y_true)
均方根误差
from math import sqrt
def RMSE(y_true,y_predict):
    return sqrt(np.sum((y_true-y_predict)**2)/len(y_true))
绝对平均误差
def MAE(y_true,y_predict):
    return np.sum(np.absolute(y_true-y_predict))/len(y_true)

机器学习~从入门到精通(二)线性回归算法和多元线性回归,开发,算法,机器学习,线性回归

MSE(x,y)
RMSE(x,y)
MAE(x,y)

机器学习~从入门到精通(二)线性回归算法和多元线性回归,开发,算法,机器学习,线性回归

from sklearn.metrics import mean_squared_error,mean_absolute_error
mean_squared_error(x,y)
mean_absolute_error(x,y)
def r2_score(y_true,y_predict):
    return 1-MSE(y_true,y_predict)/np.var(y_true)
r2_score(x,y)

机器学习~从入门到精通(二)线性回归算法和多元线性回归,开发,算法,机器学习,线性回归

R squared error

机器学习~从入门到精通(二)线性回归算法和多元线性回归,开发,算法,机器学习,线性回归

八、多线线性回归

# 特征值不止一个,叫做多元线性回归
#  通过对矩阵进行转换,加一个x0维度,可以得到求出两个矩阵点乘的最小值问题
#  得到西塔的正规方程解,带入x和y就可以求出西塔
#  西塔是一个n+1 * 1 的矩阵
#  西塔0代表截距,西塔除第一个以外的元素代表系数
from sklearn.datasets import load_boston
boston = load_boston()
print(boston.DESCR)

机器学习~从入门到精通(二)线性回归算法和多元线性回归,开发,算法,机器学习,线性回归

boston.feature_names
x = boston.data[:,5].reshape(-1,1)
y = boston.target
x.shape
y.shape
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
x = x[y<50]
y = y[y<50]

plt.scatter(x,y)

机器学习~从入门到精通(二)线性回归算法和多元线性回归,开发,算法,机器学习,线性回归
机器学习~从入门到精通(二)线性回归算法和多元线性回归,开发,算法,机器学习,线性回归
机器学习~从入门到精通(二)线性回归算法和多元线性回归,开发,算法,机器学习,线性回归
机器学习~从入门到精通(二)线性回归算法和多元线性回归,开发,算法,机器学习,线性回归文章来源地址https://www.toymoban.com/news/detail-789364.html

from spectral import *
from scipy.io import loadmat#读取数据并显示
input_image = loadmat('dc.mat')['imggt']
input_image_gt = loadmat('dc.mat')['imggt'][1,:,:] 
v = imshow(input_image_gt)
v1 = imshow(input_image)
# principal_components计算图像数据的主组件,并返回一个主组件中的平均值、协方差、特征值和特征向量
pc = principal_components(input_image)
v2 = imshow(pc.cov)
#显示协方差矩阵 白色 强正协方差,深色 强负协方差,灰色 协方差接近于0
#保留至少99.9%的总图像方差
pc_0999 = pc.reduce(fraction = 0.99)
pc_0999.eigenvalues
#获取特征值
len(pc_0999.eigenvalues)#特征值数组长度为270
img_pc = pc_0999.transform(input_image)
v = imshow(img_pc[:,:,:3],stretch_all = True)

到了这里,关于机器学习~从入门到精通(二)线性回归算法和多元线性回归的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【机器学习界的“Hello World“ 】Logistic 分类回归算法 (二元分类 & 多元分类)

    🤵‍♂️ 个人主页: @计算机魔术师 👨‍💻 作者简介:CSDN内容合伙人,全栈领域优质创作者。 该文章收录专栏 ✨— 机器学习 —✨ l o g i s t i c logistic l o g i s t i c (数理逻辑)回归算法(预测 离散值 y y y 的 非常常用的学习算法 假设有如下的八个点( y = 1 或 0 ) y=1 或 0) y

    2024年02月15日
    浏览(44)
  • 多元线性回归算法(matlab)

    b:回归系数点估计 bint:回归系数区间估计 r:残差 rint:置信区间 stats:用于检验的统计量,有三个数值,相关系数r^2,F值,与F对应的概率p alpha:显著性水平(缺省时为0.05) 说明:相关系数r^2越接近1,说明回归方程越显著; F越大,说明回归方程越显著 与F对应的概率pa(显著性水

    2024年02月07日
    浏览(44)
  • 多元线性回归算法(SPSS)

    接上篇 (1条消息) 多元线性回归算法(matlab)_成、谋的博客-CSDN博客 本篇博客主要参考自文章: (1条消息) 数学建模暑期集训6:用SPSS对数据进行多元线性回归分析_zstar-_的博客-CSDN博客_多元线性回归分析spss 三个变量:树干直径、树干高度、树干体积, 树干体积和树干直径、

    2023年04月20日
    浏览(47)
  • 【机器学习】十大算法之一 “线性回归”

      作者主页: 爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主 爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域. https://blog.csdn.net/Code_and516?type=blog 个人简介:打工人。 持续分

    2024年02月09日
    浏览(38)
  • 机器学习算法:线性回归、逻辑回归、决策树和随机森林解析

    引言 机器学习算法是人工智能领域的核心,它们用于解决各种问题,从预测房价到图像分类。本博客将深入探讨四种常见的机器学习算法:线性回归、逻辑回归、决策树和随机森林。 线性回归 什么是线性回归? 线性回归是一种用于建立连续数值输出的机器学习模型的算法。

    2024年02月10日
    浏览(53)
  • 学习记录2-多元线性回归模型(附上python代码)

    研究货运总量 y (万吨)与工业总产值 x1(亿元)、农业总产值 x2(亿元),居民非商品支出 X3 (亿元)的关系。数据见表3-9。 (1)计算出 y , x1 ,x2, x3 的相关系数矩阵。 (2)求 y 关于 x1 ,x2, x3 的三元线性回归方程。 (3)对所求得的方程做拟合优度检验。 (4)对回归方程做

    2024年02月03日
    浏览(43)
  • 机器学习算法实战(scikit-learn版本)---线性回归

    目录 文章目标: 1,导入库  2,导入数据集 3,缩放/归一化训练数据 4,创建并拟合回归模型 5,查看参数 6,预测 7,可视化  有一个开源的、商业上可用的机器学习工具包,叫做[scikit-learn](https://scikit-learn.org/stable/index.html)。这个工具包包含了你在本课程中要使用的许多算法的实

    2024年02月05日
    浏览(40)
  • 数学建模学习笔记(9)多元线性回归分析(非常详细)

    回归分析的地位 :数据分析中最基础也是最重要的分析工作,绝大多数的数据分析问题都可以使用回归的思想来解决。 回归分析的任务 :通过研究自变量和因变量的相关关系,尝试用自变量来解释因变量的形成机制,从而达到通过自变量去预测因变量的目的。具体如下:

    2024年02月03日
    浏览(46)
  • 大数据分析案例-基于多元线性回归算法构建广告投放收益模型

      🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+ 目录 1.项目背景 2.项目简介 2.1

    2024年02月03日
    浏览(56)
  • 【Python机器学习】——多元回归

    多元回归(Multiple Regression) 多元回归就像线性回归一样,但是具有多个独立值,这意味着我们试图基于两个或多个变量来预测一个值。 请看下面的数据集,其中包含了一些有关汽车的信息。 Car Model Volume Weight CO2 Toyota Aygo 1000 790 99 Mitsubishi Space Star 1200 1160 95 Skoda Citigo 1000 92

    2023年04月21日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包