Bobo老师机器学习笔记-数据归一化

 

实现算法:


def normalizate_max_min(X):
    """
    利用最大和最小化方式进行归一化,过一化的数据集中在【0, 1】
    :param X:
    :return:
    """
    np.asarray(X, dtype=float)
    if len(X.shape) == 1:
        normalizate_array = ( X - np.min(X) ) / (np.max(X) - np.min(X))
    else:
        normalizate_array = np.zeros(X.shape)
        for column in range(X.shape[1]):
            normalizate_array[:, column] = (X[:, column] - np.min(X[:, column])) / (np.max(X[:, column] - np.min(X[:, column])))

    return normalizate_array


def standardization(X):
    """
    利用z-scores实现,标准化后的数据大概在【-1.5到1.5】,数据的平均数为0,方差为1
    :param X: 可以是矩阵
    :return:
    """

    np.asarray(X, dtype=float)
    if len(X.shape) == 1:
        return (X - np.mean(X)) / np.std(X)
    else:
        dt = np.zeros(X.shape)
        for i in range(X.shape[1]):
            dt[:, i] = (X[:,i] - np.mean(X)) / np.std(X[:, ])

        return dt
 Y = np.random.randint(1, 10, (20, 5))
    nml_data = normalizate_max_min(Y)
    std_data = standardization(Y)

    plt.scatter(Y[:, 0], Y[:, 1], color='green', label='Original Data')
    plt.scatter(std_data[:, 0], std_data[:, 1], color='red', label="Max-Min normalization")
    plt.scatter(nml_data[:, 0], nml_data[:, 1], color='blue', marker='+', label="Standardazation")
    plt.legend()
    plt.show()

把测试数据进行图形展示:

Sklearn中实现可以详细可以看下面链接:

http://cwiki.apachecn.org/pages/viewpage.action?pageId=10814134

主要有一个模块交preprocessing,里面有实现各种scaler。 

比如下面两个例子:

    from sklearn.preprocessing import MinMaxScaler, StandardScaler, scale
    max_min_scaler = MinMaxScaler()
    x_train_data = max_min_scaler.fit_transform(Y)
    print(x_train_data)

    standard_scaler =  StandardScaler()
    x_train_data = standard_scaler.fit_transform(Y)
    print(x_train_data)

用KNN算法测试:

from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier

iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target)

standardscaler = StandardScaler()
standardscaler.fit(X_train)

X_train_stanard = standardscaler.transform(X_train)
X_test_standard = standardscaler.transform(X_test)

knn_clf = KNeighborsClassifier(n_neighbors=3)
knn_clf.fit(X_train_stanard, y_train)

knn_clf.predict(X_test_standard)
print(knn_clf.score(X_test_standard, y_test))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值