码迷,mamicode.com
首页 > 其他好文 > 详细

2020-5-1学习记录

时间:2020-05-01 22:20:51      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:enc   size   mat   pandas   版本问题   shuff   找不到   rate   分割   

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 明日待看。

 

2020-5-1学习记录

标签:enc   size   mat   pandas   版本问题   shuff   找不到   rate   分割   

原文地址:https://www.cnblogs.com/BlueBlueSea/p/12814925.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!