人工智能机器学习数据分析数据可视化【免费下载链接】orange3 :bar_chart: :bulb: Orange: Interactive data analysis项目地址https://gitcode.com/gh_mirrors/or/orange3点击查看免费下载本指南以 Orange 数据挖掘库orange3官方教程 regression.rst 为骨架系统讲解在 Orange 中完成回归建模的完整链路从理解 Learner 与 Regressor 的核心接口到训练回归树、线性回归、随机森林、岭回归等模型并输出可读预测结果再到使用交叉验证和 RMSE、R² 等指标评估模型优劣。读完本文你将能独立编写 Python 脚本在 Orange 框架内完成加载数据 → 训练回归器 → 预测 → 评估的完整流程并掌握各回归器的默认参数与调参方向。回归在 Orange 中的基本形态从接口层面看Orange 中的回归Regression与分类classification非常相似两者都需要带有类标号class-labeled的数据。区别仅在于目标变量class的类型——分类处理离散类别而回归预测的是连续数值。Orange 用两组对象完成回归任务回归学习器Regression Learner接受数据返回回归模型。对应基类LearnerRegression见 base_regression.py。回归模型Regression Model / Regressor接收数据实例预测连续类变量的值。对应基类ModelRegression。所有回归模块被聚合到Orange.regression命名空间下Orange/regression/__init__.py集中导出了线性回归、均值回归、KNN、SVM、随机森林、树、神经网络、PLS、梯度提升、曲线拟合等各子模块因此在脚本中统一通过Orange.regression访问即可。下面是最基本的学习—预测示例完整脚本见 code/regression.pyimport Orange data Orange.data.Table(housing) learner Orange.regression.LinearRegressionLearner() model learner(data) print(predicted, observed:) for d in data[:3]: print(%.1f, %.1f % (model(d), d.get_class()))脚本先用Orange.data.Table(housing)加载内置的波士顿房价数据集然后用LinearRegressionLearner()在全部数据上拟合出model最后逐条对前 3 个样本调用model(d)得到预测值与真实类标号d.get_class()对比输出。可以看到学习器是可调用工厂模型是可调用函数——这是 Orange 建模接口的统一约定分类、回归皆如此。关于housing数据集它位于 Orange/datasets/housing.tab由 datasets.info 注册包含506 行、13 个连续特征CRIM、ZN、INDUS、CHAS、NOX、RM、AGE、DIS、RAD、TAX、PTRATIO、B、LSTAT目标变量 MEDV房价中位数为连续类型正好是回归的天然样本。回归器速览回归树回归树Regression Tree是最直观的可解释模型。教程用SimpleTreeLearner构建一棵深度限制为 2 的回归树并以文本形式打印完整脚本见 code/regression-tree.pyimport Orange data Orange.data.Table(housing) tree_learner Orange.regression.SimpleTreeLearner(max_depth2) tree tree_learner(data) print(tree.to_string())脚本输出如下决策树RM6.941: 19.9 RM6.941 | RM7.437 | | CRIM7.393: 14.4 | | CRIM7.393 | | | DIS1.886: 45.7 | | | DIS1.886: 32.7 | RM7.437 | | TAX534.500: 45.9 | | TAX534.500: 21.9这棵树给出的规则极具业务可读性房价首先由房间数RM决定RM6.941的直接给出均值 19.9RM在 6.941 与 7.437 之间时再看犯罪率CRIM与到就业中心距离DISRM7.437时由房产税率TAX进一步划分。每个叶节点上的数值就是落入该分支样本的目标均值。从源码看SimpleTreeLearner定义于 Orange/classification/simple_tree.py其类注释明确指出它既用于分类增益比 gain ratio也用于回归均方误差 MSE作为分裂准则最初为加速随机森林而开发也可独立使用。它通过 ctypes 调用 C 实现的_simple_tree动态库完成建树。关键参数见构造函数 simple_tree.py参数默认值含义min_instances2叶节点最少样本数计数按权重计新节点若导致叶子样本不足则不分裂max_depth32树的最大深度max_majority0.95多数类最大比例超出即停止归纳仅分类用skip_prob0.0以该概率跳过某属性也可传sqrt或log2字符串分别按1 - sqrt(n)/n、1 - log2(n)/n计算bootstrapFalse是否使用自助采样数据seed42随机种子此外Orange 还提供基于 scikit-learn 的SklTreeRegressionLearner包装DecisionTreeRegressor见 Orange/regression/tree.py以及自研的TreeLearner——后者能原生处理名义属性、缺失值并支持将离散属性取值二分binarizeTrue默认 False分裂评分同样基于 MSE见 tree.py 的_score_cont阈值搜索实现。更多回归器线性回归、随机森林与岭回归除了回归树教程演示了三种常用回归器在房价数据上的表现。下面的脚本随机抽出 5 个样本作为测试集其余作为训练集比较线性回归linreg、随机森林rf与岭回归ridge的预测值完整脚本见 code/regression-other.pyimport Orange import random random.seed(42) data Orange.data.Table(housing) test Orange.data.Table(data.domain, random.sample(data, 5)) train Orange.data.Table(data.domain, [d for d in data if d not in test]) lin Orange.regression.linear.LinearRegressionLearner() rf Orange.regression.random_forest.RandomForestRegressionLearner() rf.name rf ridge Orange.regression.RidgeRegressionLearner() learners [lin, rf, ridge] regressors [learner(train) for learner in learners] print(y , .join(%5s % l.name for l in regressors)) for d in test: print( ({:5} {:5.1f} * len(regressors)).format( d.get_class(), *(r(d) for r in regressors) ) )运行结果第一列为真实房价后三列为各模型预测值y linreg rf ridge 22.2 19.3 21.8 19.5 31.6 33.2 26.5 33.2 21.7 20.9 17.0 21.0 10.2 16.9 14.3 16.8 14.0 13.6 14.9 13.5观察可知房价并不难预测三种模型都与真实值大体接近其中随机森林在多数样本上偏差最小。这里有两个值得注意的脚本细节rf.name rf——学习器对象有name属性用于输出时标识模型Orange.regression.linear.LinearRegressionLearner与Orange.regression.LinearRegressionLearner指向同一实现因为linear子模块的全部符号都被导入了Orange.regression顶层命名空间。线性回归与岭回归的参数线性回归家族全部定义在 Orange/regression/linear.py均包装自 scikit-learn 对应模型LinearRegressionLearner普通最小二乘线性回归关键参数fit_interceptTrue是否拟合截距支持样本权重supports_weights True。RidgeRegressionLearner岭回归在最小二乘基础上加入 L2 正则。核心参数alpha1.0正则化强度越大收缩越强、solverauto、tol0.001、max_iterNone。同一文件还提供LassoRegressionLearnerL1 正则alpha1.0、ElasticNetLearnerL1L2 混合alpha1.0, l1_ratio0.5、ElasticNetCVLearner自动交叉验证选alphacv5、SGDRegressionLearner随机梯度下降默认losssquared_error, penaltyl2, alpha0.0001以及PolynomialLearner生成多项式特征后再拟合默认degree2。其中线性模型类LinearModel暴露了intercept与coefficients两个只读属性见 linear.py便于解释模型权重。随机森林回归器RandomForestRegressionLearner见 Orange/regression/random_forest.py包装sklearn.ensemble.RandomForestRegressor常用默认参数为n_estimators10树的数量、criterionsquared_error分裂准则、max_depthNone不限制深度、min_samples_split2、min_samples_leaf1、max_features1.0、bootstrapTrue、oob_scoreFalse。训练得到的RandomForestRegressor模型通过trees属性可以逐棵访问内部子树见 random_forest.py。交叉验证评估RMSE 与 R²单次训练-预测只能说明个别样本的表现严谨的评估要用交叉验证。Orange 的评估与打分工具集中在Orange.evaluation模块教程给出的脚本如下完整脚本见 code/regression-cv.pyimport Orange data Orange.data.Table(housing.tab) lin Orange.regression.linear.LinearRegressionLearner() rf Orange.regression.random_forest.RandomForestRegressionLearner() rf.name rf ridge Orange.regression.RidgeRegressionLearner() mean Orange.regression.MeanLearner() learners [lin, rf, ridge, mean] res Orange.evaluation.CrossValidation(data, learners, k5) rmse Orange.evaluation.RMSE(res) r2 Orange.evaluation.R2(res) print(Learner RMSE R2) for i in range(len(learners)): print({:8s} {:.2f} {:5.2f}.format(learners[i].name, rmse[i], r2[i]))Orange.evaluation.CrossValidation(data, learners, k5)会对每个学习器执行 5 折交叉验证返回统一的results对象随后用RMSE与R2两个打分函数计算各模型的拟合优度。输出如下Learner RMSE R2 linreg 4.88 0.72 rf 4.70 0.74 ridge 4.91 0.71 mean 9.20 -0.00结果解读RMSERoot Mean Square Error均方根误差预测误差的平方均值再开方量纲与目标变量一致越小越好。本例中随机森林最低4.70线性回归4.88与岭回归4.91接近。R²Coefficient of Determination决定系数模型解释的方差比例越接近 1 越好本例中三者都在 0.71~0.74 之间说明模型能解释约七成房价方差。教程特意指出各方法的差距并不大因为它们都在默认参数下运行如果进行参数调优parameter fitting还能进一步提升。这提示我们后续可对n_estimators、max_depth、alpha等参数做网格搜索。MeanLearner回归基线注意评估列表中多了一个Orange.regression.MeanLearner()——它不学习任何特征规律只是始终预测训练集目标值的均值见 Orange/regression/mean.py。其 RMSE 高达 9.20、R² 约为 -0.00远差于其他模型。它扮演的是**基线baseline**角色任何真实回归模型都应当显著优于一律预测均值的朴素策略否则说明特征没有信息量或建模方式有误。从实现看MeanModel的predict直接用numpy.full(len(X), self.mean)返回常数向量mean.py若训练集为空则均值取 0。类注释也明确写着返回平均响应类值的回归模型。回归评估指标的完整族谱教程用到的 RMSE、R² 只是Orange.evaluation回归评分的一部分。在 Orange/evaluation/scoring.py 中回归指标以RegressionScore为基类成族提供可在交叉验证后直接调用指标名称说明MSEMean square error均方误差RMSERoot mean square error均方根误差实现为sqrt(MSE)scoring.pyMAEMean absolute error平均绝对误差MAPEMean absolute percentage error平均绝对百分比误差SMAPESymmetric mean absolute percentage error对称 MAPER2Coefficient of determination决定系数包装sklearn.metrics.r2_scoreCVRMSECoefficient of variation of the RMSERMSE 相对均值的变异系数即RMSE / mean * 100使用方式与教程一致Orange.evaluation.RMSE(res)、Orange.evaluation.R2(res)。注意Orange.evaluation本身就是 evaluation/init.py 对scoring、testing交叉验证、抽样等等子模块的聚合导出因此CrossValidation、RMSE、R2都能在顶层直接取到。回归器家族的更多成员与选择教程重点覆盖了树、线性、岭、随机森林与均值基线而Orange.regression命名空间见 Orange/regression/init.py实际提供了更完整的回归器家族读者可按数据规模与场景选用KNN 回归KNNRegressionLearner包装KNeighborsRegressorOrange/regression/knn.py适合特征空间低维、样本量适中的场景SVM 回归SVRLearner、LinearSVRLearner、NuSVRLearner包装 scikit-learn SVR 系列默认kernelrbf, C1.0且自动追加归一化预处理器Orange/regression/svm.py因为 SVM 对特征尺度敏感梯度提升回归GBRegressor包装GradientBoostingRegressor默认losssquared_error, learning_rate0.1, n_estimators100, max_depth3Orange/regression/gb.pyPLS 回归PLSRegressionLearnerOrange/regression/pls.py偏最小二乘适合高维共线特征此外还有神经网络回归Orange/regression/neural_network.py、曲线拟合Orange/regression/curvefit.py等。这些学习器共享同一套接口约定learner(data)训练、model(x)预测因此教程中的所有脚本模式训练、预测、交叉验证可以无缝迁移到任意回归器上只需替换学习器类即可。小结本文沿 Orange 官方回归教程的脉络走完了加载 housing 数据集 → 训练回归器 → 输出预测 → 交叉验证打分的完整流程并深入源码验证了背后的机制Orange.regression统一了学习器/模型接口base_regression.pySimpleTreeLearner用 MSE 分裂并支持深度、叶子样本数等控制simple_tree.pyOrange.evaluation提供了 RMSE、R² 等一整套回归评分scoring.pyMeanLearner作为朴素基线兜底mean.py。实践建议先用MeanLearner建立基线任何模型都应显著优于它优先用CrossValidationRMSE/R²做模型对比避免单次划分带来的方差默认参数只适合快速验证正式建模时应针对max_depth、n_estimators、alpha、C等关键参数进行调优需要可解释性选树模型如SimpleTreeLearner需要稳健高精度可尝试随机森林与梯度提升特征尺度敏感模型SVM记得启用归一化Orange 已默认内置。如需继续深入可参考同目录下的分类教程对比两者的接口异同或直接研读 Orange/regression 各子模块源码与 Orange/evaluation 的评估实现。赞分享人工智能机器学习数据分析数据可视化【免费下载链接】orange3 :bar_chart: :bulb: Orange: Interactive data analysis项目地址https://gitcode.com/gh_mirrors/or/orange3点击查看免费下载相关推荐模型评估黄金法则pattern_classification交叉验证完全解析模型评估黄金法则pattern_classification交叉验证完全解析 前言 在机器学习领域构建一个优秀的模型只是成功的一半如何准确评估模型的性能才示例工程机器学习魔兽世界私服Docker部署30分钟跑通完整指南魔兽世界私服Docker部署30分钟跑通完整指南 按本文操作30 分钟后你可以在本机得到一套完整可玩的魔兽世界私服数据库已初始化、登录服与世界服均在监听游戏开发后端LightGBM交叉验证k折验证与模型评估方法LightGBM交叉验证k折验证与模型评估方法 引言 在机器学习项目中模型评估是确保算法性能可靠性的关键环节。LightGBM作为高效的梯度提升框架提供了机器学习上一篇OpenPencil 可编程 SDK 的 ToolbarRoot无样式工具栏状态与动作的完整实现指南下一篇终极指南如何将Obsidian知识图谱导出为高清PNG图片创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考