zoukankan      html  css  js  c++  java
  • 机器学习算法代码实现——线性回归

    前言:拿到一个案例,去分析:

      它该是做分类还是做回归,哪部分该做分类,哪部分该做回归,哪部分该做优化,它们的目标值分别是什么。

      再挑影响因素,哪些和分类有关的影响因素,哪些和回归有关的影响因素,哪些和优化有关的影响因素。

      对于线性回归来说,

    一、导入需要的所有模块和包

    # 引入所需要的全部包
    from sklearn.model_selection import train_test_split # 数据划分的类,用于交叉验证
    from sklearn.linear_model import LinearRegression # 线性回归的类
    from sklearn.preprocessing import StandardScaler # 数据标准化
    import numpy as np
    import matplotlib as mpl
    import matplotlib.pyplot as plt
    import pandas as pd
    from pandas import DataFrame
    import time

    加载数据

    # 加载数据
    path1=' '
    df = pd.read_csv(path1, sep=';', low_memory=False)#没有混合类型的时候可以通过low_memory=F调用更多内存,加快效率)

    查看一下数据和格式

    df.head(10)#查看一下前10行数据
    # 查看格式信息
    df.info()

    获取x与y

    数据集拆分成训练集和测试集

    ## 对数据集进行测试集合训练集划分
    # X:特征矩阵(类型一般是DataFrame)
    # Y:特征对应的Label标签(类型一般是Series)
    # test_size: 对X/Y进行划分的时候,测试集合的数据占比, 是一个(0,1)之间的float类型的值
    # random_state: 数据分割是基于随机器进行分割的,该参数给定随机数种子;给一个值(int类型)的作用就是保证每次分割所产生的数数据集是完全相同的
    X_train,X_test,Y_train,Y_test = train_test_split(X, Y, test_size=0.2, random_state=0)
    #看一下训练集和测试集的样本量
    print(X_train.shape)
    print(X_test.shape)
    print(Y_train.shape)

    标准化/归一化,连续型做标准化,离散型做归一化,视情况而做

    #fit是求均值和方差,transform是用求出来的均值-求出来的方差,二者可以结合
    ss = StandardScaler() # 将数据标准化,创建了标准化后的模型对象,Normalization为归一化

    拟合,标准化,fit与transfoem可以拆成两步写

    #训练集标准化,测试集标准化
    X_train = ss.fit_transform(X_train) # 训练模型并转换训练集
    X_test = ss.transform(X_test) # 直接使用在模型构建数据上进行一个数据标准化操作 (测试集),为的是让测试集和训练集的均值和方差是一致的

    模型训练,预测结果

    ## 拟合,模型训练
    lr = LinearRegression(fit_intercept=True) # 线性模型对象构建,是否包含截距项
    lr.fit(X_train, Y_train) ## 拟合,训练模型
    ## 模型校验
    y_predict = lr.predict(X_test) ## 预测结果

    查看拟合优度,即R方

    print("训练集上R2:",lr.score(X_train, Y_train))
    print("测试集上R2:",lr.score(X_test, Y_test))
    #mse = np.average((y_predict-Y_test)**2)
    #rmse = np.sqrt(mse)
    #print("rmse:",rmse)

    输出训练得到的参数

    # 输出模型训练得到的相关参数
    print("模型的系数(θ):", end="")
    print(lr.coef_)
    print("模型的截距:", end='')
    print(lr.intercept_)
  • 相关阅读:
    算法----(1)冒泡排序
    淘宝爬虫
    爬虫_豆瓣电影top250 (正则表达式)
    爬虫_猫眼电影top100(正则表达式)
    Android 简单调用摄像头
    Android 简单天气预报
    思维模型
    This view is not constrained, it only has designtime positions, so it will jump to (0,0) unless you
    Android studio preview界面无法预览,报错render problem
    Android studio 3.1.2报错,no target device found
  • 原文地址:https://www.cnblogs.com/qianchaomoon/p/12103810.html
Copyright © 2011-2022 走看看