import pandas as pd import numpy as np from sklearn.linear_model import LinearRegression, SGDRegressor, Ridge, LogisticRegression from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.metrics import mean_squared_error, classification_report, roc_auc_score, silhouette_score import joblib from sklearn.decomposition import PCA from sklearn.cluster import KMeans def linear_regression(): """ 线性回归 y = w1x1 + w2x2 + ... + wnxn + b(偏质) = wTx + b 线性关系一定是线性模型 线性模型不一定是线性关系‘ 真实值与预测值之间的差距衡量关系 : cost 损失函数/成本函数/目标函数 总损失 : J(Θ) = ∑(hw(xi)-yi)² 最小二乘法 优化使损失减小, 接近真实值 : 1.正规方程 w = XTy / (XTX) 直接求得w sklearn.linear_model.LinearRegression(fit_intercept=True) 通过正规方程优化 fit_intercept: 是否计算偏置 LinearRegression.coef_: 回归系数 LinearRegression.intercept_: 偏置 小规模数据 2.梯度下降 不断迭代w sklearn.linear_model.SGDRegression(loss="squared_loss", fit_intercept=True, learning_rate="invscaling", eta0=0.01) 实现了随机梯度下降学习, 支持不同的loss函数和正则化惩罚项来拟合线性回归模型 loss: 损失类型, "squared_loss" 普通最小二乘法 fit_intercept: 是否计算偏置 learning_rate: 学习率填充 "constant" "optimal" "invscaling" 对一个常数值的学习率来说, 可以使用learning_rate="constant", 并使用eta0来指定学习率 SGDRegression.coef_: 回归系数 SGDRegression.intercept_: 偏置 回归性能评估: 均方误差(Mean Squared Error)评价机制 MSE = 1/m * ∑(yi-yba)² sklearn.metrics.mean_squared_error(y_true, y_pred) 均方误差回归损失 y_true: 真实值 y_pred: 预测值 return: 浮点数结果 大规模数据 拓展: 优化梯度下降 GD Gradient Descent, 梯度下降, 原始的梯度下降法需要计算所有的样本值, 计算量大 SGD Stochastic GD, 随机梯度下降, 一次迭代只考虑一个训练样本 优点: 高效, 容易实现 缺点: 需要许多超参数(正则参数, 迭代数), 对于特征标准化很敏感 SAG Stochastic Average D, 随机平均梯度, 岭回归, 逻辑回归中都有SAG优化 :return: """ # 案例: 波士顿房价预测 # 获取数据 data_url = "http://lib.stat.cmu.edu/datasets/boston" ra