1. 线性回归(Linear Regression)
线性回归是一种用于预测连续值的统计模型。它假设两个变量之间存在线性关系,并试图找到最佳的线性关系来预测因变量。
图表解析
线性回归模型通常使用散点图来展示自变量和因变量之间的关系,并通过一条直线来表示最佳拟合线。
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
import numpy as np
# 创建一些数据
X = np.array([1, 2, 3, 4, 5]).reshape(-1, 1)
y = np.array([2, 4, 5, 4, 5])
# 创建线性回归模型
model = LinearRegression()
# 训练模型
model.fit(X, y)
# 绘制散点图和拟合线
plt.scatter(X, y, color='blue')
plt.plot(X, model.predict(X), color='red')
plt.show()
2. 逻辑回归(Logistic Regression)
逻辑回归是一种用于预测二元分类结果的统计模型。它通过将线性回归模型的输出转换为概率值来实现。
图表解析
逻辑回归模型通常使用ROC曲线和AUC值来评估模型的性能。
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_curve, auc
# 创建一些数据
X = np.array([[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]])
y = np.array([0, 1, 0, 1, 0])
# 创建逻辑回归模型
model = LogisticRegression()
# 训练模型
model.fit(X, y)
# 绘制ROC曲线
fpr, tpr, thresholds = roc_curve(y, model.predict_proba(X)[:, 1])
roc_auc = auc(fpr, tpr)
plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic')
plt.legend(loc="lower right")
plt.show()
3. 决策树(Decision Tree)
决策树是一种基于树结构的预测模型,通过一系列的规则来预测目标变量。
图表解析
决策树通常使用树状图来展示,其中每个节点代表一个特征,每个分支代表一个决策规则。
from sklearn.tree import DecisionTreeClassifier
from sklearn import tree
# 创建一些数据
X = np.array([[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]])
y = np.array([0, 1, 0, 1, 0])
# 创建决策树模型
model = DecisionTreeClassifier()
# 训练模型
model.fit(X, y)
# 绘制树状图
fig, ax = plt.subplots(figsize=(12, 12))
tree.plot_tree(model, filled=True, ax=ax)
plt.show()
4. 随机森林(Random Forest)
随机森林是一种集成学习方法,通过构建多个决策树并合并它们的预测结果来提高模型的性能。
图表解析
随机森林通常使用图表来展示每棵决策树对最终预测的贡献。
from sklearn.ensemble import RandomForestClassifier
import matplotlib.pyplot as plt
# 创建一些数据
X = np.array([[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]])
y = np.array([0, 1, 0, 1, 0])
# 创建随机森林模型
model = RandomForestClassifier(n_estimators=10)
# 训练模型
model.fit(X, y)
# 绘制每棵决策树的重要性
importances = model.feature_importances_
indices = np.argsort(importances)[::-1]
plt.title('Feature Importances')
plt.bar(range(X.shape[1]), importances[indices], color='r', align='center')
plt.xticks(range(X.shape[1]), indices)
plt.xlim([-1, X.shape[1]])
plt.show()
5. K-最近邻(K-Nearest Neighbors)
K-最近邻是一种基于实例的机器学习算法,通过找到与训练数据中最近k个实例最相似的实例来预测目标变量。
图表解析
K-最近邻模型通常使用散点图来展示每个实例的类别和距离。
from sklearn.neighbors import KNeighborsClassifier
import matplotlib.pyplot as plt
# 创建一些数据
X = np.array([[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]])
y = np.array([0, 1, 0, 1, 0])
# 创建K-最近邻模型
model = KNeighborsClassifier(n_neighbors=3)
# 训练模型
model.fit(X, y)
# 绘制散点图和预测区域
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Paired, edgecolors='k')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('K-Nearest Neighbors')
plt.show()
6. 支持向量机(Support Vector Machine)
支持向量机是一种用于分类和回归的线性模型,通过找到一个超平面来最大化数据点之间的间隔。
图表解析
支持向量机模型通常使用散点图来展示数据点和超平面。
from sklearn.svm import SVC
import matplotlib.pyplot as plt
# 创建一些数据
X = np.array([[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]])
y = np.array([0, 1, 0, 1, 0])
# 创建支持向量机模型
model = SVC(kernel='linear')
# 训练模型
model.fit(X, y)
# 绘制散点图和超平面
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Paired, edgecolors='k')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('Support Vector Machine')
plt.show()
7. 朴素贝叶斯(Naive Bayes)
朴素贝叶斯是一种基于贝叶斯定理的分类方法,假设特征之间相互独立。
图表解析
朴素贝叶斯模型通常使用图表来展示每个类别的概率分布。
from sklearn.naive_bayes import GaussianNB
import matplotlib.pyplot as plt
# 创建一些数据
X = np.array([[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]])
y = np.array([0, 1, 0, 1, 0])
# 创建朴素贝叶斯模型
model = GaussianNB()
# 训练模型
model.fit(X, y)
# 绘制概率分布
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Paired, edgecolors='k')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('Naive Bayes')
plt.show()
通过以上七种热门统计模型的介绍和图表解析,相信你已经对这些模型有了初步的了解。在实际应用中,选择合适的模型需要根据具体问题和数据特点来决定。希望这篇文章能帮助你轻松掌握数据分析技巧。
