码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【ML07】Linear Regression using Scikit-Learn


    Linear Regression using Scikit-Learn

    • 下载data
    • S1: 加载数据集数据
    • S2: 对数据进行处理
    • S3: 创建和拟合模型
    • S4: 做预测
    • What's more

    Scikit-Learn 是一个非常重要的、开源的机器学习工具包,其中集成了很多算法,使得无需手写算法,直接输入参数以及函数可以得到结果。
    详情访问: https://scikit-learn.org/stable/index.html
    在这里插入图片描述

    下载data

    我的资源池,0积分下载,如无法下载可留言,收到后转发给你。


    S1: 加载数据集数据

    数据来源:吴恩达《ML》实验室house数据,仅用于学习交流。

    import numpy as np
    
    def load_house_data():
        data = np.loadtxt("./data/houses.txt", delimiter=',', skiprows=1)
        X = data[:,:4]
        y = data[:,4]
        return X, y
    
    X_train, y_train = load_house_data()
    # print(X_train)
    X_features = ['size(sqft)','bedrooms','floors','age']
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    S2: 对数据进行处理

    StandardScaler类: 用于处理数据归一化和标准化。
    fit_transform(a)方法: 找出a的均值和方差。
    np.ptp(a)方法: 对a中所有数据计算最大值和最小值的差值。

    x = ( x − μ ) σ ,其中 σ 为方差的值, μ 为平均值 x = \frac{(x-μ)}σ,其中 σ 为方差的值,μ 为平均值 x=σ(x−μ)​,其中σ为方差的值,μ为平均值

    from sklearn.preprocessing import StandardScaler
    
    scaler = StandardScaler()		# 用于处理数据归一化和标准化
    X_norm = scaler.fit_transform(X_train)		# 找出a的均值和方差,计算公式a得到结果
    print(np.ptp(X_train,axis=0))		# 打印X_train中最大值与最小值的差   
    print(np.ptp(X_norm,axis=0))		# 打印X_norm中最大值与最小值的差
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    S3: 创建和拟合模型

    随机梯度下降英文是 Stochastic gradient descend (SGD) 。
    而在scikit-learn中,随机梯度下降被叫做 SGDRegressor。
    SGD与BGD(批量梯度下降) 比较,区别在于 SGD 是每选取一个样本,进行计算然后更新参数;而BGD则是将所有样本数据都计算完成后再更新参数。

    from sklearn.linear_model import SGDRegressor
    
    sgdr = SGDRegressor(max_iter=1000)
    sgdr.fit(X_norm, y_train)
    print(f"完成的迭代次数: {sgdr.n_iter_}, 权重更新次数: {sgdr.t_}")
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    # 接上
    b_norm = sgdr.intercept_
    w_norm = sgdr.coef_
    print(f"参数 w: {w_norm}, 参数 b:{b_norm}")
    print( "之前实验室的模型参数 w: [110.56 -21.27 -32.71 -37.97], 参数 b: 363.16")
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述


    S4: 做预测

    sgdr.predict: 用sgdr做预测,预测出测试集的预测值
    np.dot: 用numpy的求w向量和x向量的数量积,具体见博客:https://blog.csdn.net/weixin_43098506/article/details/127090413

    y_pred_sgd = sgdr.predict(X_norm)
    y_pred = np.dot(X_norm, w_norm) + b_norm  
    print(f"使用 np.dot() 是否与 sgdr.predict 匹配: {(y_pred == y_pred_sgd).all()}")
    
    print(f"预测值:\n{y_pred[:4]}" )
    print(f"实际值 \n{y_train[:4]}")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    end->>>


    What’s more

    在plt上展示出!

    # plot predictions and targets vs original features    
    fig,ax=plt.subplots(1,4,figsize=(12,3),sharey=True)
    for i in range(len(ax)):
        ax[i].scatter(X_train[:,i],y_train, label = 'target')
        ax[i].set_xlabel(X_features[i])
        ax[i].scatter(X_train[:,i],y_pred,color=dlc["dlorange"], label = 'predict')
    ax[0].set_ylabel("Price"); ax[0].legend();
    fig.suptitle("target versus prediction using z-score normalized model")
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
  • 相关阅读:
    第4章 初识SqlSugarCore之实体与实体特性
    菜鸟教程《Python 3 教程》笔记(18):File(文件)方法
    JVM篇---第四篇
    头条三面技术四面HR,我临危不乱,顺顺利利一周拿下!
    相控阵天线(三):直线阵列低副瓣综合(切比雪夫、泰勒分布、SinZ-Z和Villeneuve分布)
    记一次 OSS 大批量文件下载的实现 → bat脚本不好玩!
    智慧电力运维系统助力实现配电室无人值守
    有关python的代码执行顺序以及多线程
    ReentrantLock实现公平锁,可中断,条件变量,可重入案例
    ArcGIS基础:点要素分割线要素和提取线要素的交点
  • 原文地址:https://blog.csdn.net/weixin_43098506/article/details/127136507
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号