标签:enc size mat pandas 版本问题 shuff 找不到 rate 分割
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中正例和负例数目是相等的。
其实这个函数很好理解啦,不必要花费太多的时间。
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是透明度参数
其实可以发现散点图是那种反对称的。
这个需要知道行的索引标签或者列的标签:
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表示列。
插补方法。
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
可以看到这里的策略有四种:均值、中位数、众数、指定常数。
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]]
分别是按行连接,要求列数相同;按列连接,则要求行数相同。
scikit-learn中常用缩放:
最小-最大缩放(又叫作归一化) :x-min/(max-min),这样就缩放到了[0,1]之间,就会有一个范围,对应MinMaxScaler 。
标准化:x-mean/方差,也就是说标准化之后的均值都为0,这样没有缩放到固定的范围,对应StandadScaler 。
归一化受异常值影响大。
https://www.jianshu.com/p/516f009c0875 明日待看。
标签:enc size mat pandas 版本问题 shuff 找不到 rate 分割
原文地址:https://www.cnblogs.com/BlueBlueSea/p/12814925.html