Sklearn 线性模型sklearn.linear_model提供了从经典最小二乘到正则化回归、逻辑回归等线性模型。 线性回归1.LinearRegression— 普通最小二乘法 ⭐fromsklearn.linear_modelimportLinearRegression modelLinearRegression(fit_interceptTrue,# 是否计算截距copy_XTrue,n_jobsNone,positiveFalse# 强制系数为正1.0)model.fit(X,y)# 关键属性print(model.coef_)# 系数 wprint(model.intercept_)# 截距 bprint(model.rank_)# X 的秩print(model.singular_)# X 的奇异值print(model.n_features_in_)# 拟合时看到的特征数# 预测与评分y_predmodel.predict(X_test)r2model.score(X_test,y_test)2.Ridge— 岭回归L2 正则化⭐fromsklearn.linear_modelimportRidge modelRidge(alpha1.0,# 正则化强度越大越强fit_interceptTrue,copy_XTrue,max_iterNone,tol1e-3,solverauto,# auto,svd,cholesky,lsqr,sparse_cg,sag,saga,lbfgsrandom_stateNone)model.fit(X,y)print(model.coef_)print(model.intercept_)solver 选择指南:solver适用场景auto默认自动选择svd少量特征稳定cholesky多特征快lsqr稀疏数据sag/saga大数据集快saga 支持稀疏lbfgs配合positiveTrue3.RidgeCV— 带交叉验证的岭回归fromsklearn.linear_modelimportRidgeCV modelRidgeCV(alphas[0.1,1.0,10.0],# 尝试的 alpha 值cv5,# 或 None 使用广义交叉验证GCVscoringNone,# 自定义评分store_cv_valuesFalse,# 存储每折的交叉验证值)model.fit(X,y)print(model.alpha_)# 最优 alphaprint(model.best_score_)# 最佳分数store_cv_valuesTrue内置 alphas 生成:importnumpyasnp alphasnp.logspace(-3,3,50)4.Lasso— Lasso 回归L1 正则化⭐产生稀疏解自动特征选择。fromsklearn.linear_modelimportLasso modelLasso(alpha1.0,fit_interceptTrue,precomputeFalse,copy_XTrue,max_iter1000,tol1e-4,warm_startFalse,positiveFalse,random_stateNone,selectioncyclic# cyclic 或 random)model.fit(X,y)print(model.coef_)# 部分系数可能为 0稀疏print(model.sparse_coef_)# 稀疏表示print(model.n_iter_)# 实际迭代次数5.LassoCV/LassoLarsCV— 带交叉验证的 Lassofromsklearn.linear_modelimportLassoCV modelLassoCV(eps1e-3,# 正则化路径长度n_alphas100,# alpha 数量alphasNone,# 或自定义 alpha 序列cv5,max_iter1000,random_state42,n_jobs-1)model.fit(X,y)print(model.alpha_)# 最优 alphaprint(model.mse_path_.shape)# (n_alphas, n_folds)print(model.alphas_)# 所有 alpha 值LassoLarsCV基于 Lars 路径:fromsklearn.linear_modelimportLassoLarsCV modelLassoLarsCV(cv5,max_iter500,n_jobs-1)model.fit(X,y)6.ElasticNet— 弹性网络L1 L2⭐fromsklearn.linear_modelimportElasticNet modelElasticNet(alpha1.0,l1_ratio0.5,# L1 比例: 0 (L2) ~ 1 (L1)fit_interceptTrue,max_iter1000,tol1e-4,warm_startFalse,positiveFalse,random_stateNone,selectioncyclic)model.fit(X,y)ElasticNetCV:fromsklearn.linear_modelimportElasticNetCV modelElasticNetCV(l1_ratio[0.1,0.5,0.7,0.9,0.95,1.0],alphasNone,eps1e-3,n_alphas100,cv5,max_iter1000,n_jobs-1)model.fit(X,y)7.Lars/LassoLars— 最小角回归fromsklearn.linear_modelimportLars,LassoLars# LARSmodelLars(fit_interceptTrue,n_nonzero_coefs500,# 非零系数最大数量epsnp.finfo(float).eps)# Lasso LARSmodelLassoLars(alpha0.1,fit_interceptTrue,max_iter500)8.OrthogonalMatchingPursuit— 正交匹配追踪fromsklearn.linear_modelimportOrthogonalMatchingPursuit modelOrthogonalMatchingPursuit(n_nonzero_coefsNone,# 或指定最大非零系数数tolNone,# 或指定容差fit_interceptTrue)model.fit(X,y)print(model.n_iter_)9.BayesianRidge— 贝叶斯岭回归fromsklearn.linear_modelimportBayesianRidge modelBayesianRidge(max_iter300,tol1e-3,alpha_11e-6,alpha_21e-6,# Gamma 先验参数lambda_11e-6,lambda_21e-6,alpha_initNone,lambda_initNone,fit_interceptTrue,compute_scoreFalse)model.fit(X,y)print(model.alpha_)# 估计的正则化参数精度print(model.lambda_)# 估计的正则化参数精度print(model.sigma_)# 噪声方差估计ARDRegression自动相关性确定:fromsklearn.linear_modelimportARDRegression modelARDRegression(max_iter300,tol1e-3,fit_interceptTrue)model.fit(X,y)print(model.sigma_)# 估计的噪声方差print(model.coef_)# 估计的系数更多稀疏性10.SGDRegressor— 随机梯度下降回归fromsklearn.linear_modelimportSGDRegressor modelSGDRegressor(losssquared_error,# squared_error,huber,epsilon_insensitive,squared_epsilon_insensitivepenaltyl2,# l2,l1,elasticnet, Nonealpha0.0001,# 正则化强度l1_ratio0.15,# ElasticNet 的 L1 比例fit_interceptTrue,max_iter1000,tol1e-3,shuffleTrue,learning_rateinvscaling,# constant,optimal,invscaling,adaptiveeta00.01,# 初始学习率power_t0.25,# invscaling 的幂指数early_stoppingFalse,validation_fraction0.1,random_state42,warm_startFalse)11. 其他回归模型fromsklearn.linear_modelimport(HuberRegressor,# Huber 鲁棒回归对异常值鲁棒RANSACRegressor,# RANSAC 鲁棒回归TheilSenRegressor,# Theil-Sen 估计器中值回归QuantileRegressor,# 分位数回归TweedieRegressor,# Tweedie 分布回归PoissonRegressor,# 泊松回归计数数据GammaRegressor,# Gamma 回归正连续数据PassiveAggressiveRegressor,# 被动攻击回归)# Huber 回归对异常值较鲁棒fromsklearn.linear_modelimportHuberRegressor modelHuberRegressor(epsilon1.35,max_iter100,alpha0.0001)model.fit(X,y)# RANSAC更鲁棒的异常值处理fromsklearn.linear_modelimportRANSACRegressor modelRANSACRegressor(estimatorNone,# 默认 LinearRegressionmin_samplesNone,residual_thresholdNone,max_trials100,random_state42)model.fit(X,y)print(model.inlier_mask_)# 内点/外点标记# 分位数回归任意分位点fromsklearn.linear_modelimportQuantileRegressor modelQuantileRegressor(quantile0.5,alpha1.0,solverhighs)model.fit(X,y)️ 线性分类1.LogisticRegression— 逻辑回归 ⭐fromsklearn.linear_modelimportLogisticRegression modelLogisticRegression(penaltyl2,# l1,l2,elasticnet, NoneC1.0,# 正则化强度的倒数越小正则化越强fit_interceptTrue,class_weightNone,# None 或 balanced 或 dictrandom_stateNone,solverlbfgs,# newton-cg,lbfgs,liblinear,sag,sagamax_iter100,multi_classauto,# auto,ovr,multinomialverbose0,warm_startFalse,n_jobsNone,l1_ratioNone# ElasticNet 的 L1 比例)model.fit(X,y)# 关键方法与属性y_predmodel.predict(X)y_probmodel.predict_proba(X)# 所有类别的概率y_log_probamodel.predict_log_proba(X)# log 概率y_decisionmodel.decision_function(X)# 决策函数值print(model.coef_)# 系数 (n_classes, n_features)print(model.intercept_)# 截距print(model.classes_)# 类别标签print(model.n_iter_)# 实际迭代次数 (lenn_classes)solver 选择:solver适用场景lbfgs默认中小型多分类 (multinomial)liblinear小型二分类支持 L1newton-cg多分类sag大数据集快速saga大稀疏支持 L1/ElasticNet2.LogisticRegressionCV— 带交叉验证的逻辑回归fromsklearn.linear_modelimportLogisticRegressionCV modelLogisticRegressionCV(Cs10,# 整数自动生成 Cs 个值, 或列表cv5,penaltyl2,scoringNone,solverlbfgs,max_iter100,class_weightNone,n_jobs-1,refitTrue,# 用最优 C 在全集上重训random_state42)model.fit(X,y)print(model.C_)# 最优 C 值数组print(model.Cs_)# 尝试的 C 值3.SGDClassifier— 随机梯度下降分类器 ⭐fromsklearn.linear_modelimportSGDClassifier modelSGDClassifier(losshinge,# 即线性 SVM# loss 可选:# hinge — 线性 SVM# log_loss — 逻辑回归# modified_huber — 带概率估计的平滑 hinge# perceptron — 感知机# squared_hinge — 平方 hinge# squared_error — 最小二乘分类penaltyl2,alpha0.0001,l1_ratio0.15,fit_interceptTrue,max_iter1000,tol1e-3,shuffleTrue,learning_rateoptimal,eta00.0,early_stoppingFalse,validation_fraction0.1,class_weightNone,warm_startFalse,averageFalse,# 平均 SGD 权重random_state42)model.fit(X,y)# 支持 partial_fit增量学习model.partial_fit(X_batch,y_batch,classesnp.unique(y))4.Perceptron— 感知机fromsklearn.linear_modelimportPerceptron modelPerceptron(penaltyNone,alpha0.0001,fit_interceptTrue,max_iter1000,tol1e-3,shuffleTrue,eta01.0,random_state42,class_weightNone,warm_startFalse)model.fit(X,y)5.PassiveAggressiveClassifier— 被动攻击分类器fromsklearn.linear_modelimportPassiveAggressiveClassifier modelPassiveAggressiveClassifier(C1.0,fit_interceptTrue,max_iter1000,tol1e-3,early_stoppingFalse,validation_fraction0.1,shuffleTrue,losshinge,# hinge 或 squared_hingerandom_state42,class_weightNone,warm_startFalse)model.fit(X,y)6.RidgeClassifier/RidgeClassifierCV— 岭分类器fromsklearn.linear_modelimportRidgeClassifier modelRidgeClassifier(alpha1.0,fit_interceptTrue,copy_XTrue,max_iterNone,class_weightNone,solverauto)model.fit(X,y)# 带 CV 版本fromsklearn.linear_modelimportRidgeClassifierCV modelRidgeClassifierCV(alphas[0.1,1.0,10.0],cv5)model.fit(X,y) 多任务学习fromsklearn.linear_modelimport(MultiTaskLasso,# 多任务 LassoMultiTaskElasticNet,# 多任务弹性网络MultiTaskLassoCV,# 带 CV 的多任务 LassoMultiTaskElasticNetCV,)fromsklearn.linear_modelimportMultiTaskLasso# Y 是二维时使用多输出回归modelMultiTaskLasso(alpha1.0)model.fit(X,Y)# Y 是 (n_samples, n_tasks) 实践选择指南场景推荐模型线性回归无正则化LinearRegression— 基线模型特征多需自动选择Lasso/LassoCV特征相关性强Ridge/RidgeCV两者兼顾ElasticNet/ElasticNetCV大数据集SGDRegressor有异常值HuberRegressor/RANSACRegressor计数数据PoissonRegressor二分类LogisticRegression多分类LogisticRegression(multi_classmultinomial)大文本分类SGDClassifier(losshinge)在线/增量学习SGDClassifier/SGDRegressorpartial_fit[[sklearn-总览|← 返回总览]]