打卡第四天

◆ 特征预处理
归一化、标准化、鸢尾花识别案例

一,特征与处理为什么要做归一化和标准化

特征预处理是机器学习中一项重要的任务,其中归一化和标准化是两种常见的方法,主要目的是:
1.  加速模型训练:归一化和标准化可以将特征值缩放到一个特定的区间,如[0, 1]或[-1, 1]。这可以帮助模型更快地收敛,因为不同特征之间的尺度和范围得到了调整,使算法的计算复杂度降低。
2.  减少异常值的影响:当数据集中存在异常值时,它们可能会对模型的训练产生较大的影响。归一化和标准化可以将特征值的分布拉到一个常见的区间内,从而减小异常值的影响。
    
一般来说,归一化更适用于处理具有相似尺度的连续特征,例如图像的像素值。而标准化更加适用于具有不同尺度的特征,常见于深度学习中的权值初始化。
在实际应用中,具体选择归一化还是标准化取决于数据集的特点和模型的要求,可以通过尝试不同的预处理方法来找到最适合的方案。

二 利用KNN算法对鸢尾花进行处理

利用KNN算法对鸢尾花进行分类是一个典型的机器学习任务。鸢尾花数据集是一个包含三个类别的花卉数据集,每个类别有50个样本,每个样本有4个特征:花萼长度、花萼宽度、花瓣长度和花瓣宽度。这个数据集通常用于机器学习和统计学的教学和演示。

以下是使用KNN算法对鸢尾花进行分类的步骤:

1. 数据加载:首先,我们需要加载鸢尾花数据集。在Python中,我们可以使用`sklearn`库中的`load_iris`函数来加载数据。

2. 数据预处理:在分类之前,我们可能需要对数据进行预处理,例如标准化特征值,使得每个特征的均值为0,标准差为1。这可以通过`sklearn`库中的`StandardScaler`来实现。

3. 划分数据集:我们需要将数据集分为训练集和测试集。通常,可以使用`train_test_split`函数来随机划分数据集,确保训练集和测试集的分布尽可能相似。

4. 创建KNN分类器:使用`sklearn`库中的`KNeighborsClassifier`类来创建一个KNN分类器实例。你需要指定邻居的数量`n_neighbors`。

5. 训练模型:使用训练集数据训练KNN分类器。

6. 模型评估:使用测试集数据来评估模型的性能。你可以使用`score`方法来得到模型的准确率。

7. 参数调优:KNN算法的性能可能会受到邻居数量`n_neighbors`和其他参数的影响。你可能需要尝试不同的参数组合,以找到最佳的模型性能。

下面是一个简单的代码示例,展示如何使用KNN算法对鸢尾花进行分类:

```python
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import accuracy_score

# 1. 数据加载
iris = load_iris()
X, y = iris.data, iris.target

# 2. 数据预处理
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# 3. 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.3, random_state=42)

# 4. 创建KNN分类器
knn = KNeighborsClassifier(n_neighbors=3)

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

# 6. 模型评估
y_pred = knn.predict(X_test)
print("Accuracy:", accuracy_score(y_test, y_pred))

# 7. 参数调优(可选)
# 你可能需要尝试不同的n_neighbors值,或其他参数,以找到最佳性能。
```

这段代码首先加载了鸢尾花数据集,然后对数据进行了标准化处理,接着将数据集划分为训练集和测试集,创建了一个KNN分类器,并使用训练集数据训练了模型。最后,代码评估了模型在测试集上的性能,并打印出了准确率。在实际应用中,你可能还需要进行参数调优,以找到最佳的模型性能。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值