[ML]通过50个Python案例了解深度学习和神经网络
通过50个Python案例了解深度学习和神经网络
摘要:机器学习 (Machine Learning, ML)、深度学习 (Deep Learning, DL) 和神经网络 (Neural Networks, NN) 是人工智能领域的核心技术。Python 是学习和实践这些技术的首选语言,因为它提供了丰富的库(如 scikit-learn、TensorFlow、Keras、PyTorch 等)来简化算法实现和数据处理。以下是 50 个 Python 程序示例,旨在通过实践帮助你深入理解机器学习、深度学习和神经网络算法的精髓。这些示例涵盖了基础概念、经典算法、数据预处理、模型评估和高级深度学习技术。
由于篇幅限制,每个示例都以核心代码和简要说明为主,完整运行可能需要安装相关库(如 pip install numpy pandas scikit-learn tensorflow keras torch matplotlib
)和数据集(如从 Kaggle 或 UCI 下载)。这些代码适合初学者和中级用户,帮助你从基础到进阶掌握机器学习和深度学习的核心概念。如果有特定需求或需要更详细的解释,可以进一步讨论。
1. 基础数据处理和可视化
1.1 数据加载和基本统计
- 目标:使用 Pandas 加载数据集并查看基本统计信息。
- 理论:数据预处理是机器学习的第一步,理解数据分布至关重要。
import pandas as pd# 加载数据集 (假设使用 CSV 文件)
df = pd.read_csv('sample_data.csv') # 替换为实际文件路径
print("First 5 rows:\n", df.head())
print("\nDataset Info:\n", df.info())
print("\nBasic Statistics:\n", df.describe())
1.2 数据可视化 - 散点图
- 目标:使用 Matplotlib 绘制散点图,探索变量关系。
- 理论:可视化帮助理解数据分布和相关性。
import pandas as pd
import matplotlib.pyplot as pltdf = pd.read_csv('sample_data.csv')
plt.scatter(df['feature1'], df['feature2'])
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('Scatter Plot of Feature1 vs Feature2')
plt.show()
1.3 数据可视化 - 直方图
- 目标:绘制特征的分布直方图。
- 理论:直方图用于分析数据分布特性。
import pandas as pd
import matplotlib.pyplot as pltdf = pd.read_csv('sample_data.csv')
df['feature1'].hist(bins=20)
plt.xlabel('Feature 1')
plt.ylabel('Frequency')
plt.title('Histogram of Feature1')
plt.show()
1.4 数据预处理 - 缺失值处理
- 目标:处理数据集中的缺失值。
- 理论:缺失值处理是数据清洗的重要步骤。
import pandas as pddf = pd.read_csv('sample_data.csv')
print("Missing Values:\n", df.isnull().sum())
# 用均值填充缺失值
df['feature1'].fillna(df['feature1'].mean(), inplace=True)
# 删除包含缺失值的行
df.dropna(inplace=True)
print("Missing Values after Handling:\n", df.isnull().sum())
1.5 数据预处理 - 标准化
- 目标:将数据标准化为均值为 0,标准差为 1。
- 理论:标准化确保特征对模型的影响均衡。
import pandas as pd
from sklearn.preprocessing import StandardScalerdf = pd.read_csv('sample_data.csv')
scaler = StandardScaler()
df[['feature1', 'feature2']] = scaler.fit_transform(df[['feature1', 'feature2']])
print("Standardized Data:\n", df[['feature1', 'feature2']].head())
2. 机器学习基础 - 监督学习
2.1 线性回归
- 目标:使用线性回归预测连续值。
- 理论:线性回归是最简单的监督学习算法,假设特征与目标变量呈线性关系。
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_splitdf = pd.read_csv('sample_data.csv')
X = df[['feature1']]
y = df['target']
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)
print("Coefficients:", model.coef_)
print("Intercept:", model.intercept_)
print("Test Score (R^2):", model.score(X_test, y_test))
2.2 逻辑回归
- 目标:使用逻辑回归进行二分类。
- 理论:逻辑回归用于分类问题,预测概率。
import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_splitdf = pd.read_csv('sample_data.csv')
X = df[['feature1', 'feature2']]
y = df['target'] # 假设 target 是二分类标签
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)
print("Test Accuracy:", model.score(X_test, y_test))
2.3 K 近邻 (KNN) 分类
- 目标:使用 KNN 进行分类。
- 理论:KNN 基于最近邻的距离进行分类。
import pandas as pd
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_splitdf = pd.read_csv('sample_data.csv')
X = df[['feature1', 'feature2']]
y = df['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
model = KNeighborsClassifier(n_neighbors=5)
model.fit(X_train, y_train)
print("Test Accuracy:", model.score(X_test, y_test))
2.4 支持向量机 (SVM)
- 目标:使用 SVM 进行分类。
- 理论:SVM 寻找最大间隔超平面进行分类。
import pandas as pd
from sklearn.svm import SVC
from sklearn.model_selection import train_test_splitdf = pd.read_csv('sample_data.csv')
X = df[['feature1', 'feature2']]
y = df['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
model = SVC(kernel='rbf')
model.fit(X_train, y_train)
print("Test Accuracy:", model.score(X_test, y_test))
2.5 决策树
- 目标:使用决策树进行分类。
- 理论:决策树通过特征分割进行决策。
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_splitdf = pd.read_csv('sample_data.csv')
X = df[['feature1', 'feature2']]
y = df['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
model = DecisionTreeClassifier()
model.fit(X_train, y_train)
print("Test Accuracy:", model.score(X_test, y_test))