下面是关于监督学习与无监督学习的一些基本概念、算法和如何使用Scikit-learn库实施这些算法的学习笔记。
监督学习监督学习是一种机器学习类型,它通过已标记的数据集训练模型,以便在看到新的输入数据时进行预测。以下是几种常见的监督学习算法:
1. 线性回归 (Linear Regression)- 概述:线性回归是一种用于预测连续值(回归问题)的基本算法,它假设目标变量与输入特征之间存在线性关系。
- 模型公式:( y = \beta_0 + \beta_1x_1 + \beta_2x_2 + ... + \beta_nx_n + \epsilon )。
使用Scikit-learn训练和测试:- import numpy as np
- import pandas as pd
- from sklearn.model_selection import train_test_split
- from sklearn.linear_model import LinearRegression
- # 示例数据
- data = pd.DataFrame({
- 'X': [1, 2, 3, 4, 5],
- 'y': [2, 3, 5, 7, 11]
- })
- # 划分数据集
- X = data[['X']]
- y = data['y']
- X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
- # 训练模型
- model = LinearRegression()
- model.fit(X_train, y_train)
- # 测试模型并预测
- predictions = model.predict(X_test)
复制代码
2. 逻辑回归 (Logistic Regression)- 概述:逻辑回归用于二分类问题,它根据输入特征预测类的概率,输出值在0到1之间。
- 模型公式:( P(Y=1|X) = \frac{1}{1 + e^{-(\beta_0 + \beta_1x_1 + ... + \beta_nx_n)}} )。
使用Scikit-learn训练和测试:- from sklearn.linear_model import LogisticRegression
- # 示例数据
- data = pd.DataFrame({
- 'Feature1': [5, 10, 15, 20],
- 'Feature2': [1, 0, 1, 0],
- 'Label': [0, 0, 1, 1]
- })
- # 划分数据集
- X = data[['Feature1', 'Feature2']]
- y = data['Label']
- X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
- # 训练模型
- model = LogisticRegression()
- model.fit(X_train, y_train)
- # 测试模型并预测
- predictions = model.predict(X_test)
复制代码
3. 支持向量机 (Support Vector Machine, SVM)- 概述:SVM是一种用于分类问题的强大算法,通过寻找最佳的超平面将不同类别的数据分隔开。
- 应用场景:可以用于线性和非线性分类。
使用Scikit-learn训练和测试:- from sklearn.svm import SVC
- # 示例数据
- data = pd.DataFrame({
- 'Feature1': [1, 2, 3, 1, 2, 3],
- 'Feature2': [1, 1, 1, 2, 2, 2],
- 'Label': [0, 0, 0, 1, 1, 1]
- })
- # 划分数据集
- X = data[['Feature1', 'Feature2']]
- y = data['Label']
- X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
- # 训练模型
- model = SVC()
- model.fit(X_train, y_train)
- # 测试模型并预测
- predictions = model.predict(X_test)
复制代码
4. 决策树 (Decision Tree)- 概述:决策树是一种基于树形结构的分类或回归算法,通过一系列的判断条件对数据进行分类。
- 优点:易于理解和解释,能够处理缺失值。
使用Scikit-learn训练和测试:- from sklearn.tree import DecisionTreeClassifier
- # 示例数据
- data = pd.DataFrame({
- 'Feature1': [5, 7, 8, 7, 6],
- 'Feature2': [100, 200, 150, 150,
复制代码
|