A. 数据收集与清洗
数据收集与清洗是数据处理的第一步,它包括获取原始数据并进行数据清洗和预处理,以确保数据的质量和可用性。
1. 数据获取
数据获取是指从不同的数据源中收集数据。数据源可以包括数据库、API接口、文件等。
示例 1: 从文件读取数据
import pandas as pd
# 从 CSV 文件读取数据
data = pd.read_csv('data.csv')
# 打印数据
print(data.head())
2. 数据清洗
数据清洗是指处理数据中的缺失值、异常值和重复值等问题,使数据变得干净、一致和可用。
示例 2: 处理缺失值
import pandas as pd
# 创建包含缺失值的数据
data = pd.DataFrame({
'A': [1, 2, None, 4, 5], 'B': [None, 2, 3, 4, None]})
# 处理缺失值
data_cleaned = data.dropna()
# 打印处理后的数据
print(data_cleaned)
3. 数据预处理
数据预处理是对数据进行转换和规范化,以便更好地适应模型的要求。常见的预处理操作包括特征缩放、编码分类变量等。
示例 3: 特征缩放
from sklearn.preprocessing import MinMaxScaler
# 创建特征矩阵
X = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
# 特征缩放
scaler = MinMaxScaler()
X_scaled = scaler.fit_transform(X)
# 打印特征矩阵
print(X_scaled)
B. 数据可视化
数据可视化是通过图表、图像等形式将数据可视化呈现,以便更好地理解数据的分布、趋势和关系。
1. 单变量可视化
单变量可视化是指对单个变量的分布进行可视化,常用的方法包括直方图、箱线图等。
示例 4: 绘制直方图
import matplotlib.pyplot as plt
# 创建数据
data = [1, 1, 2, 3, 3, 3, 4, 5, 5]
# 绘制直方图
plt.hist(data, bins=5)
# 显示图形
plt.show()
2. 双变量可视化
双变量可视化是指对两个变量之间的关系进行可视化,常用的方法包括散点图、线图等。
示例 5: 绘制散点图
import matplotlib.pyplot as plt
# 创建数据
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
# 绘制散点图
plt.scatter(x, y)
# 显示图形
plt.show()
3. 多变量可视化
多变量可视化是指对多个变量之间的关系进行可视化,常用的方法包括热力图、平行坐标图等。
示例 6: 绘制热力图
import seaborn as sns
# 创建数据
data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 绘制热力图
sns.heatmap(data)
# 显示图形
plt.show()
C. 特征选择与处理
特征选择与处理是指根据问题需求和特征的相关性选择最重要的特征,并对特征进行转换和处理,以提高模型的性能和泛化能力。
1. 特征选择
特征选择是从原始特征集中选择最相关的特征,以减少维度和噪声的影响,提高模型的训练效果。
示例 7: 方差选择法
from sklearn.feature_selection import VarianceThreshold
# 创建特征矩阵
X = [[0, 1, 0], [0, 1, 1], [0, 1, 0], [0, 1, 1], [1, 0, 0]]
# 方差选择法
selector = VarianceThreshold(threshold=0.2)
X_selected = selector.fit_transform(X)
# 打印特征矩阵
print(X_selected)
2. 特征转换
特征转换是对原始特征进行变换,以提取更有用的信息或改善特征的分布。
示例 8: 多项式特征转换
from sklearn.preprocessing import PolynomialFeatures
# 创建特征矩阵
X = [[2, 3], [2, 3], [2, 3]]
# 多项式特征转换
poly = PolynomialFeatures(degree=2)
X_transformed = poly.fit_transform(X)
# 打印特征矩阵
print(X_transformed)
3. 特征标准化
特征标准化是将特征缩放到均值为0,标准差为1的标准正态分布,以消除不同特征之间的量纲差异。
示例 9: 标准化特征
from sklearn.preprocessing import StandardScaler
# 创建特征矩阵
X = [[1, -1, 2], [2, 0, 0], [0, 1, -1]]
# 标准化特征
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# 打印特征矩阵
print(X_scaled)
D. 数据集划分与交叉验证
数据集划分与交叉验证是将数据集划分为训练集和测试集,并使用交叉验证评估模型的泛化能力。
1. 数据集划分
数据集划分是将原始数据集划分为训练集和测试集,用于模型的训练和评估。
示例 10: 数据集划分
from sklearn.model_selection import train_test_split
# 创建特征矩阵和标签向量
X = [[1, 2], [3, 4], [5, 6], [7, 8]]
y = [1, 2, 3, 4]
# 数据集划分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 打印划分后的数据
print("训练集特征矩阵:", X_train)
print("测试集特征矩阵:", X_test)
print("训练集标签:", y_train)
print("测试集标签:", y_test)
##2. 交叉验证
交叉验证是一种通过将数据集划分为多个子集进行训练和评估的方法,以更准确地评估模型的性能。
示例 11: K折交叉验证
```python
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression
# 创建特征矩阵和标签向量
X = [[1, 2], [3, 4], [5, 6], [7, 8]]
y = [1, 2, 3, 4]
# 创建逻辑回归模型
model = LogisticRegression()
# K折交叉验证
scores = cross_val_score(model, X, y, cv=3)
# 打印交叉验证得分
print("交叉验证得分:", scores)
以上是关于数据处理与准备的介绍。下一节将介绍如何构建和训练机器学习模型,以及如何应用这些模型进行预测和推理。