首页 > 技术文章 > 机器学习经常用到的函数(特征工程,参数选择,评估值等)

loubin 2019-09-23 23:38 原文

  1. 我草泥马!!!!!loc取值的时候行索引从0开始,代表第一行, iloc取值行索引也从0开始,还有
  2. 一定要记得记得记得记得每次清洗完数据之后用data.rest_index(inplate=True)重置索引

一:生成数据

1. make_blobs(from sklearn.datasets.samples_generator import make_blobs): 

  用于生成训练样本https://www.jianshu.com/p/069d8841bd8e

2.make_circles(from sklearn.datasets.samples_generator import make_circles):

  生成圆形样本,其中factor参数为内圆与外圆的半径之比。

2. contour:画等高线(在matplotlib中)

3. meshgrid(在numpy):生成坐标网格。

4. 用以下的方法可以画3维图形

from mpl_toolkits import mplot3d
r = np.exp(-(X**2).sum(1))
def plot3d(X, y):
    ax = plt.subplot(projection='3d')
    ax.scatter3D(X[:, 0], X[:, 1], r, c=y)
    ax.set_xlabel("x")
    ax.set_ylabel("y")
    ax.set_zlabel("z")
plot3d(X, y)

5. format格式化字符串https://www.runoob.com/python/att-string-format.html

 6.使用matplotlib.cm.rainbow(np.linespace(0, 1, len))可以生成数量为len的颜色用于画图来区分不同类

 

二:好玩的数据集

1. 一些有名字的人脸数据:from sklearn.datasets import fetch_lfw_people

   faces = fetch.lfw.people(min_faces_per_person=60) 选出用60个脸图的人。

  faces有target属性,target[i]是第i张脸的名字的索引

  target_name属性,存放人名。例如target_name[target[i]]就是第i张脸的名字

  images属性,images是一个列表,每个元素是一个图像,也就是一个矩阵。可以用imshow(images[i])显示的i张脸的图像。这里images的shape为(1348, 62, 47)的,说明有1348张图,每张图是62*43的矩阵

  data属性:就是把images属性的每个矩阵变成一行数据,用于训练。所以data属性的shape是(1348, 2914)

 

 

 

三:参数的选择

1.GridSearchCV:用法如下,用于参数的选择

from sklearn.model_selection import GridSearchCV
param_grid = {'svc__C': [1, 5, 10],
              'svc__gamma': [0.0001, 0.0005, 0.001]}
grid = GridSearchCV(model, param_grid)

grid.fit(Xtrain, ytrain)
print(grid.best_params_)

  属性best_params_: 最好的参数

  属性best_estimator:最好的参数对应的训练模型。

2.pandas的notnull函数可以找到特定特征非空的样本,例如data是一个数据表,column是某一列, data_new = data [ pd.notnull ( data [ column] ) ] 将筛选出所有的column不为空的样本并形成新数据表

 

四:评估值

1.混淆矩阵

from sklearn.metrics import confusion_matrix
from seaborn import heatmap
c = confusion_matrix(y_test, y_predict)
heatmap(data=c, annot=True, xticklabels=target_names, yticklabels=target_names)
ax2.set_xlabel("predict")
ax2.set_ylabel("true")
plt.show()

 2.平均绝对误差, 均方绝对误差

 

 

 

 

 

五:特征工程

设data是DataFrame类型, feature是Series类型

1. data.info可以显示数据集信息,特征类型

2. data.select_dtypes(include=['object'])可以选出相应类型为‘object'的特征,返回值是DataFram类型

  data.select_dtypes(exclude=['object'])选出类型不为’object'的特征。

 3. feature.skew()和feature.kurt()可分别计算特征的偏度和峰度

4.对特征取对数可以减小数据的偏度。

5. data[column_name].hist()可以画出每个特征的直方图分布,这里特征由column_name指定。

6. data[column_name].corr()加上sns.heatmap()可以以热度图的形式画出特征之间的相关性

7. feature.astype('category').cat.codes可以将object类型的特征编码为数值类型

8.如果你想去掉指定时间的行可以如下:先将形如‘2013-01-01’,类型为object的列转换成datetme类型,然后再比较。

注意这里使用了异或去掉指定行。

  

data['order_pay_date'] = pd.to_datetime(data['order_pay_date'])
data2 = data[(True^data['order_pay_date'].isin(['2013-11-11']))]

 

 

推荐阅读