ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Python体现逻辑回归和决策树的区别

Python体现逻辑回归和决策树的区别 代码1逻辑回归pythonimport numpy as npimport matplotlib.pyplot as pltfrom sklearn.datasets import make_moonsfrom sklearn.model_selection import train_test_splitfrom sklearn.linear_model import LogisticRegressionfrom sklearn.metrics import accuracy_score# 1. 生成非线性数据两个交错半圆X, y make_moons(n_samples300, noise0.25, random_state42)X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.3, random_state42)# 2. 训练逻辑回归clf LogisticRegression()clf.fit(X_train, y_train)# 3. 预测与评估y_pred clf.predict(X_test)print(逻辑回归准确率:, accuracy_score(y_test, y_pred))print(逻辑回归系数:, clf.coef_)print(逻辑回归截距:, clf.intercept_)# 4. 绘制决策边界xx, yy np.meshgrid(np.linspace(X[:, 0].min() - 0.5, X[:, 0].max() 0.5, 500),np.linspace(X[:, 1].min() - 0.5, X[:, 1].max() 0.5, 500))Z clf.predict(np.c_[xx.ravel(), yy.ravel()]).reshape(xx.shape)plt.contourf(xx, yy, Z, alpha0.3, cmapcoolwarm)plt.scatter(X_train[:, 0], X_train[:, 1], cy_train,edgecolork, cmapcoolwarm, labeltrain)plt.scatter(X_test[:, 0], X_test[:, 1], cy_test,markerx, cmapcoolwarm, labeltest)plt.title(逻辑回归线性决策边界)plt.legend()plt.show()特点逻辑回归的决策边界是一条直线因为它的本质是线性分类器。它在这个非线性数据上通常表现一般。---代码2决策树pythonimport numpy as npimport matplotlib.pyplot as pltfrom sklearn.datasets import make_moonsfrom sklearn.model_selection import train_test_splitfrom sklearn.tree import DecisionTreeClassifier, export_textfrom sklearn.metrics import accuracy_score# 1. 同一份数据X, y make_moons(n_samples300, noise0.25, random_state42)X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.3, random_state42)# 2. 训练决策树clf DecisionTreeClassifier(max_depth4, random_state42)clf.fit(X_train, y_train)# 3. 预测与评估y_pred clf.predict(X_test)print(决策树准确率:, accuracy_score(y_test, y_pred))print(特征重要性:, clf.feature_importances_)# 4. 打印树规则展示可解释性print(\n决策树规则示例)print(export_text(clf, feature_names[x1, x2]))# 5. 绘制决策边界xx, yy np.meshgrid(np.linspace(X[:, 0].min() - 0.5, X[:, 0].max() 0.5, 500),np.linspace(X[:, 1].min() - 0.5, X[:, 1].max() 0.5, 500))Z clf.predict(np.c_[xx.ravel(), yy.ravel()]).reshape(xx.shape)plt.contourf(xx, yy, Z, alpha0.3, cmapcoolwarm)plt.scatter(X_train[:, 0], X_train[:, 1], cy_train,edgecolork, cmapcoolwarm, labeltrain)plt.scatter(X_test[:, 0], X_test[:, 1], cy_test,markerx, cmapcoolwarm, labeltest)plt.title(决策树非线性、阶梯状决策边界)plt.legend()plt.show()特点决策树可以拟合非线性边界决策边界是“阶梯状”的。它不需要特征缩放但树太深容易过拟合。---两者核心区别对比项 逻辑回归 决策树模型类型 线性模型 非线性模型决策边界 直线 / 超平面 轴对齐的阶梯状边界可解释性 系数表示特征对对数几率的影响 if-else 规则直观但树深后复杂特征缩放 通常需要 不需要概率输出 Sigmoid 平滑概率 叶子节点类别频率不连续过拟合 较不容易配合正则化 容易过拟合需要剪枝/限制深度外推能力 可以外推 不能外推只会在训练范围附近划分适用场景 线性可分、需要概率和解释 非线性、规则复杂、混合类型特征一句话总结逻辑回归是“画一条线”来分类决策树是“不断切蛋糕”来分类。前者简单稳定、可解释为权重后者灵活强大、可解释为规则但更容易过拟合。文章仅供参考用。
返回列表