Python机器学习:KNN算法08scikit-learn中的Scaler
程序员文章站
2022-07-02 09:08:09
归一化fit之后就保存了均值和方差…...
归一化
from sklearn import datasets
import numpy as np
iris = datasets.load_iris()
X = iris.data
y = iris.target
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=666)
#sklearn中的StandarScaler
from sklearn.preprocessing import StandardScaler
standardScaler = StandardScaler()
standardScaler.fit(X_train)
standardScaler.mean_
array([5.83416667, 3.08666667, 3.70833333, 1.17 ])
standardScaler.scale_#数据分布范围,方差~
array([0.81019502, 0.44327067, 1.76401924, 0.75317107])
归一化
X_train = standardScaler.transform(X_train)
print(X_train)
部分结果
这个归一化使用的也是训练集中的均值和方差
X_test_standard = standardScaler.transform(X_test)
使用KNN算法看看分类效果
from sklearn.neighbors import KNeighborsClassifier
knn_clf = KNeighborsClassifier(n_neighbors=3
knn_clf.fit(X_train,y_train)
KNeighborsClassifier(n_neighbors=3)
knn_clf.score(X_test,y_test)#没归一化
0.3333333333333333
使用归一化的数据集,正确率100.。。
knn_clf.score(X_test_standard,y_test)
1.0
另外还自己封装了一个类,可以处理ndim=2的矩阵
import numpy as np
class StandardScaler():
def __init__(self):
self.mean_ = None
self.scale_ = None
def fit(self,X):
"""根据训练数据集X获得数据的均值和方差"""
assert X.ndim == 2,"The dimension of X must be 2"
self.mean_ = np.array([np.mean(X[:,i]) for i in range(X.shape[1])])
self.scale__ = np.array([np.std(X[:,i]) for i in range(X.shape[1])])
def transform(self,X):
"""将X根据这个StandardScaler进行均值方差归一化处理"""
assert X.ndim ==2,"The dimension of X must be 2"
assert self.mean_ is not None and self.scale_ is not None,"must fit before transform"
resX = np.empty(shape=X.shape,dtype=float)
for col in range(X.shape[1]):
resX[:,col] = (X[:,col] - self.mean_[col]) / self.scale_[col]
return resX
fit之后就保存了均值和方差…
本文地址:https://blog.csdn.net/weixin_46815330/article/details/110433590
下一篇: 紫色槐花能吃吗,原来它被误解了这么多年
推荐阅读
-
python机器学习之KNN分类算法
-
python机器学习朴素贝叶斯算法及模型的选择和调优详解
-
机器学习_KMeans聚类算法的学习(Python实现)
-
《机器学习实战》斧头书——第二章—KNN算法(1)——海伦的约会
-
【机器学习】【KNN】线性扫描算法,python实现识别手写数字的系统
-
机器学习实战学习笔记(二)-KNN算法(2)-使用KNN算法进行手写数字的识别
-
【python】机器学习实战KNN算法之手写数字识别
-
机器学习笔记:python中scikit-learn库的K-Means类
-
Feature Selection For Machine Learning in Python (Python机器学习中的特征选择)
-
机器学习——python可视化实现KNN算法