在Python中,机器学习的核心算法有很多,例如线性回归、逻辑回归、决策树、随机森林、支持向量机、神经网络等。下面我将分别介绍这些算法的基本原理和编程实例。
1. 线性回归
线性回归是一种简单的机器学习方法,它试图找到一个超平面(也称为决策边界),将训练数据分为两个部分:一部分是正例,另一部分是负例。线性回归的目标是最小化预测值与实际值之间的平方误差。
```python
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
import numpy as np
# 生成模拟数据
X = np.array([[1, 2], [1, 4], [1, 0], [4, 2], [4, 4]])
y = np.array([3, 6, 3, 8, 9])
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建并训练模型
regressor = LinearRegression()
regressor.fit(X_train, y_train)
# 预测
y_pred = regressor.predict(X_test)
print("真实值:", y_test)
print("预测值:", y_pred)
```
2. 逻辑回归
逻辑回归是一种二分类算法,它使用逻辑函数来预测一个样本属于正类还是负类。逻辑回归的目标是最大化对数似然函数。
```python
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
import numpy as np
# 生成模拟数据
X = np.array([[0, 0], [1, 1], [1, 0], [0, 1], [0, 1]])
y = np.array([0, 1, 0, 1, 0])
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建并训练模型
logreg = LogisticRegression()
logreg.fit(X_train, y_train)
# 预测
y_pred = logreg.predict(X_test)
print("真实值:", y_test)
print("预测值:", y_pred)
```
3. 决策树
决策树是一种基于树结构的机器学习算法,它通过递归地划分数据集来构建决策树。每个节点代表一个特征,每个分支代表一个条件,每个叶节点代表一个类别。
```python
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
import numpy as np
# 生成模拟数据
X = np.array([[0, 0], [1, 1], [1, 0], [0, 1], [0, 1]])
y = np.array([0, 1, 0, 1, 0])
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建并训练模型
clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)
# 预测
y_pred = clf.predict(X_test)
print("真实值:", y_test)
print("预测值:", y_pred)
```
4. 随机森林
随机森林是一种基于树结构的机器学习算法,它通过构建多个决策树来提高模型的泛化能力。每个决策树都是从原始数据中随机抽取一定数量的特征进行训练。
```python
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
import numpy as np
# 生成模拟数据
X = np.array([[0, 0], [1, 1], [1, 0], [0, 1], [0, 1]])
y = np.array([0, 1, 0, 1, 0])
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建并训练模型
rf = RandomForestClassifier()
rf.fit(X_train, y_train)
# 预测
y_pred = rf.predict(X_test)
print("真实值:", y_test)
print("预测值:", y_pred)
```
5. 支持向量机
支持向量机是一种基于统计学习理论的机器学习方法,它通过寻找最优的超平面将不同类别的数据分开。支持向量机的主要优点是可以处理高维数据和非线性问题。
```python
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
import numpy as np
# 生成模拟数据
X = np.array([[0, 0], [1, 1], [1, 0], [0, 1], [0, 1]])
y = np.array([0, 1, 0, 1, 0])
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建并训练模型
svc = SVC()
svc.fit(X_train, y_train)
# 预测
y_pred = svc.predict(X_test)
print("真实值:", y_test)
print("预测值:", y_pred)
```