zoukankan      html  css  js  c++  java
  • 2020-5-1学习记录

    1.sklearn 分层抽样 StratifiedShuffleSplit

    https://blog.csdn.net/m0_38061927/article/details/76180541 这个给的例子还不错

    from sklearn.model_selection import StratifiedShuffleSplit
    import numpy as np
    X = np.array([[1, 2], [3, 4], [1, 2], [3, 4],
                  [1, 2],[3, 4], [1, 2], [3, 4]])#训练数据集8*2
    y = np.array([0, 0, 1, 1,0,0,1,1])#类别数据集8*1
    
    ss=StratifiedShuffleSplit(n_splits=1,test_size=0.25,train_size=0.75,random_state=0)#分成5组,测试比例为0.25,训练比例是0.75
    
    for train_index, test_index in ss.split(X, y):#这里调用split分割
       print("TRAIN:", train_index, "TEST:", test_index)#获得索引值
       X_train, X_test = X[train_index], X[test_index]#训练集对应的值
       y_train, y_test = y[train_index], y[test_index]#类别集对应的值
    #输出:
    TRAIN: [5 2 6 4 1 3] TEST: [7 0]

    n_splits控制分成几份train/test对,也可以多次生成就可以发现,train中正例和负例数目是相等的。

    其实这个函数很好理解啦,不必要花费太多的时间。

    2.pandas的scatter_matrix散点矩阵

    https://pandas.pydata.org/docs/reference/api/pandas.plotting.scatter_matrix.html

    df = pd.DataFrame(np.random.randn(1000, 4), columns=['A','B','C','D'])#对角线是特征直方图,其他的是散点图
    scatter_matrix(df, alpha=0.2)#alpha是透明度参数

    其实可以发现散点图是那种反对称的。

    3.从数据框中删除行或列

    这个需要知道行的索引标签或者列的标签:

    import pandas as pd
    
    df = pd.DataFrame([[1, 2], [3, 4]], columns = ['a','b'])
    df2 = pd.DataFrame([[5, 6], [7, 8]], columns = ['a','b'])
    
    df = df.append(df2)
    
    # Drop rows with label 0
    df = df.drop('a',axis=1)
    
    print(df)
    #输出:删除列
       b
    0  2
    1  4
    0  6
    1  8
    
    df = df.drop(0,axis=0)
    #输出:删除行:行为0的
       a  b
    1  3  4
    1  7  8

    也学到了。drop是会返回副本的,不影响原来的数据框对象。

    这里的axis和numpy中的一样,0表示行,1表示列。

    4.sklearn中的impute方法

    插补方法。

    https://stackoverflow.com/questions/50843757/getting-modulenotfounderror-no-module-named-sklearn-impute-despite-having-l

    import的时候遇到了找不到模块的问题,原来是版本问题,0.19的sklearn中是没有这个插补方法的。

    所以选择升级,现在它已经有0.22版本的包了。

    ERROR: Could not install packages due to an EnvironmentError: [WinError 5] 拒绝访问。

    https://blog.csdn.net/jacke121/article/details/86747921

    pip install --user --upgrade scikit-learn

    加个--user就可以了。

    import numpy as np
    from sklearn.impute import SimpleImputer
    imp_mean = SimpleImputer(missing_values=np.nan, strategy='mean')
    #imp_mean.fit([[7, 2, 3], [4, np.nan, 6], [10, 5, 9]])
    print(imp_mean.fit_transform([[7, 2, 3], [4, np.nan, 6], [10, 5, 9]]))
    
    X = [[np.nan, 2, 3], [4, np.nan, 6], [10, np.nan, 9]]
    print(imp_mean.fit_transform(X))
    
    #输出
    [[ 7.   2.   3. ]
     [ 4.   3.5  6. ]
     [10.   5.   9. ]]
    [[ 7.  2.  3.]
     [ 4.  2.  6.]
     [10.  2.  9.]]

    其实原来给的样例代码是,先fit一个,然后再transformX,其实我就不太明白,为什么不用自身去transform自身呢,所以我就改了一下。

    https://scikit-learn.org/stable/modules/generated/sklearn.impute.SimpleImputer.html

    可以看到这里的策略有四种:均值、中位数、众数、指定常数。

    5.np.r_ np.c_

    import numpy as np
    a = np.array([[1, 2, 3],[7,8,9]])
    
    b=np.array([[4,5,6],[1,2,3]])
    print(np.c_[a,b])
    print(np.r_[a,b])
    #输出:

    [[1 2 3 4 5 6]
    [7 8 9 1 2 3]]
    [[1 2 3]
    [7 8 9]
    [4 5 6]
    [1 2 3]]

    分别是按行连接,要求列数相同;按列连接,则要求行数相同。

    6.特征缩放

    scikit-learn中常用缩放:

    最小-最大缩放(又叫作归一化) :x-min/(max-min),这样就缩放到了[0,1]之间,就会有一个范围,对应MinMaxScaler 。

    标准化:x-mean/方差,也就是说标准化之后的均值都为0,这样没有缩放到固定的范围,对应StandadScaler

    归一化受异常值影响大。

    https://www.jianshu.com/p/516f009c0875 明日待看。

  • 相关阅读:
    织梦开发——相关阅读likeart应用
    织梦标签教程
    织梦专题调用代码
    HIT 2543 Stone IV
    POJ 3680 Intervals
    HIT 2739 The Chinese Postman Problem
    POJ 1273 Drainage Ditches
    POJ 2455 Secret Milking Machine
    SPOJ 371 Boxes
    HIT 2715 Matrix3
  • 原文地址:https://www.cnblogs.com/BlueBlueSea/p/12814925.html
Copyright © 2011-2022 走看看