【100天精通Python】Day73:python机器学习入门算法详解与代码示例

目录


1. 监督学习算法:

  • 线性回归(Linear Regression):用于建模连续变量之间的线性关系。示例:预测房屋价格。
  • 逻辑回归(Logistic Regression):用于建模二分类问题。示例:判断一封电子邮件是垃圾邮件还是正常邮件。
  • 决策树(Decision Tree):通过构建树形结构进行分类或回归。示例:预测购买某个产品的用户。
  • 支持向量机(Support Vector Machine):通过找到一个最优的超平面将数据分类。示例:预测肿瘤是否为恶性。
  • 随机森林(Random Forest):基于多个决策树的集成算法,通过投票方式进行预测。示例:预测客户是否流失。 

1.1 线性回归(Linear Regression):

  • 详解:线性回归用于建立连续变量之间的线性关系模型。

  • 示例代码:

from sklearn.linear_model import LinearRegression

# 准备训练数据
X_train = [[1], [2], [3], [4], [5]]  # 自变量的训练数据
y_train = [2, 4, 6, 8, 10]           # 因变量的训练数据

# 创建模型对象
model = LinearRegression()

# 拟合模型
model.fit(X_train, y_train)

# 预测
X_test = [[6], [7], [8]]             # 自变量的测试数据
y_pred = model.predict(X_test)       # 预测因变量

# 输出预测结果
print("预测结果:", y_pred)

1.2  逻辑回归(Logistic Regression):

  • 详解:逻辑回归用于建立二分类问题的模型,输出是概率值。
  • 示例代码
from sklearn.linear_model import LogisticRegression

# 准备训练数据
X_train = [[1, 2], [2, 1], [2, 3], [4, 5]]    # 自变量的训练数据
y_train = [0, 0, 1, 1]                       # 因变量的训练数据

# 创建模型对象
model = LogisticRegression()

# 拟合模型
model.fit(X_train, y_train)

# 预测
X_test = [[3, 4], [1, 1], [5, 6]]            # 自变量的测试数据
y_pred = model.predict(X_test)               # 预测因变量

# 输出预测结果
print("预测结果:", y_pred)

1.3 决策树(Decision Tree):

  • 详解:决策树通过构建树形结构进行分类或回归,选择最佳特征进行划分。
  • 示例代码:
from sklearn.tree import DecisionTreeClassifier

# 准备训练数据
X_train = [[1, 2], [2, 1], [2, 3], [4, 5]]    # 自变量的训练数据
y_train = [0, 0, 1, 1]                       # 因变量的训练数据

# 创建模型对象
model = DecisionTreeClassifier()

# 拟合模型
model.fit(X_train, y_train)

# 预测
X_test = [[3, 4], [1, 1], [5, 6]]            # 自变量的测试数据
y_pred = model.predict(X_test)               # 预测因变量

# 输出预测结果
print("预测结果:", y_pred)

1.4 支持向量机(Support Vector Machine):

  • 详解:支持向量机通过找到一个最优的超平面将数据分类,可以处理线性和非线性问题。
  • 示例代码:
from sklearn.svm import SVC

# 准备训练数据
X_train = [[1, 2], [2, 1], [2, 3], [4, 5]]    # 自变量的训练数据
y_train = [0, 0, 1, 1]                       # 因变量的训练数据

# 创建模型对象
model = SVC()

# 拟合模型
model.fit(X_train, y_train)

# 预测
X_test = [[3, 4], [1, 1], [5, 6]]            # 自变量的测试数据
y_pred = model.predict(X_test)               # 预测因变量

# 输出预测结果
print("预测结果:", y_pred)

1.5 随机森林(Random Forest):

随机森林(Random Forest)是一种基于决策树的集成学习算法,它通过训练多个决策树并集成它们的预测结果来提高模型的准确性和泛化能力。

  • 随机森林由多颗决策树组成,每颗树都是独立而相互不相关的。
  • 每颗决策树在构建时,会从原始训练集中进行有放回地随机采样(bootstrap),形成一个新的训练集,并使用该训练集构建决策树。
  • 在构建决策树的过程中,对于每个节点的特征选择,随机森林会从所有特征中随机选取一部分特征。
  • 最后,随机森林通过集成所有决策树的预测结果,使用投票或平均的方式进行分类或回归。

 示例代码:

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 加载数据集
data = load_iris()
X = data.data
y = data.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建随机森林模型
model = RandomForestClassifier(n_estimators=100, random_state=42)

# 训练模型
model.fit(X_train, y_train)

# 预测
y_pred = model.predict(X_test)

# 评估模型
accuracy = accuracy_score(y_test, y_pred)
print("准确度:", accuracy)

 2. 无监督学习算法:

  • 聚类算法(Clustering):将相似的数据点聚集到一起。示例:对市场细分进行分析。
  • 主成分分析(PCA):通过线性变换将高维数据降维至低维空间。示例:图像识别中的特征提取。
  • K均值聚类(K-means Clustering):将数据分成K个簇,使得每个数据点属于最近的簇。示例:对顾客进行细分。

 2.1 聚类算法(Clustering):

  • 详解:聚类算法是一种无监督学习方法,将相似的数据点聚集到一起,形成若干个簇。聚类算法可以帮助我们发现数据集中的内在结构和模式,用于市场细分、推荐系统、图像分割等领域。
  • 示例代码:
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs

# 创建示例数据
X, y = make_blobs(n_samples=100, centers=3, random_state=42)

# 创建聚类模型
model = KMeans(n_clusters=3, random_state=42)

# 进行聚类
y_pred = model.fit_predict(X)

# 输出聚类结果
print("聚类结果:", y_pred)

2.2 主成分分析(PCA):

  • 详解:主成分分析是一种常用的降维方法,通过线性变换将高维数据转换为低维空间。它找到数据中最大方差的方向,即第一主成分,然后在与第一主成分正交的方向上找到第二主成分,依此类推。主成分分析可以用于减少特征维度、去除冗余信息以及可视化高维数据。
  • 示例代码:
from sklearn.decomposition import PCA
from sklearn.datasets import load_iris

# 加载鸢尾花数据集
data = load_iris()
X = data.data

# 创建PCA模型
model = PCA(n_components=2)

# 进行主成分分析
X_pca = model.fit_transform(X)

# 输出降维后的数据
print("降维后的数据:", X_pca)

 

2.3 K均值聚类(K-means Clustering):

  • 详解:K均值聚类是一种迭代的聚类算法。它将数据集划分为K个簇,并使得每个数据点属于最近的簇的中心点。K均值聚类常用于数据分析、图像分割、文本挖掘等任务。
  • 示例代码:
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs

# 创建示例数据
X, y_true = make_blobs(n_samples=300, centers=4, random_state=42)

# 创建K均值聚类模型
model = KMeans(n_clusters=4, random_state=42)

# 进行聚类
model.fit(X)

# 获取聚类标签
y_pred = model.labels_

# 输出聚类结果
print("聚类结果:", y_pred)

3. 集成学习算法:

  1. 随机森林(Random Forest):通过多个决策树的集成进行分类或回归。示例:预测房价

  2. 梯度提升树(Gradient Boosting):通过训练多个弱模型,并逐步拟合残差来优化整体模型。示例:预测销售额。

  3. AdaBoost(Adaptive Boosting):通过逐步调整样本权重,训练多个弱分类器并加权投票。示例:人脸识别。

3.1 随机森林(Random Forest):

  • 详解:随机森林通过多个决策树的集成进行分类或回归。每个决策树在构建时以随机的方式选择特征子集,并使用自助采样的方式构建每棵树的训练数据集。最后,随机森林通过投票(分类)或平均(回归)决策树的结果来得出最终预测。
  • 示例代码:
from sklearn.ensemble import RandomForestRegressor
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

# 加载数据集
data = fetch_california_housing()
X = data.data
y = data.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建随机森林模型
model = RandomForestRegressor(n_estimators=100, random_state=42)

# 训练模型
model.fit(X_train, y_train)

# 预测
y_pred = model.predict(X_test)

# 评估模型
mse = mean_squared_error(y_test, y_pred)
print("均方误差:", mse)

3.2 梯度提升树(Gradient Boosting):

  • 详解:梯度提升树通过训练多个弱模型,并逐步拟合当前模型的残差来优化整体模型。每一轮训练时,前一轮的残差成为当前轮的目标变量。最后,梯度提升树将多个弱模型加权求和得到最终预测结果。
  • 示例代码:
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

# 加载数据集
data = fetch_california_housing()
X = data.data
y = data.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建梯度提升树模型
model = GradientBoostingRegressor(n_estimators=100, random_state=42)

# 训练模型
model.fit(X_train, y_train)

# 预测
y_pred = model.predict(X_test)

# 评估模型
mse = mean_squared_error(y_test, y_pred)
print("均方误差:", mse)

3.3 AdaBoost(Adaptive Boosting):

  • 详解:AdaBoost通过逐步调整样本权重,训练多个弱分类器并加权投票的方式进行分类。每个弱分类器权重取决于其在之前轮次中的分类误差。最后,AdaBoost将多个弱分类器组合成一个强分类器。
  • 示例代码:
from sklearn.ensemble import AdaBoostClassifier
from sklearn.datasets import fetch_olivetti_faces
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 加载数据集
data = fetch_olivetti_faces()
X = data.data
y = data.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建AdaBoost模型
model = AdaBoostClassifier(n_estimators=100, random_state=42)

# 训练模型
model.fit(X_train, y_train)

# 预测
y_pred = model.predict(X_test)

# 评估模型
accuracy = accuracy_score(y_test, y_pred)
print("准确度:", accuracy)

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2023年11月29日
下一篇 2023年11月30日

相关推荐