python机器学习常用的几个库

1. import numpy as np 矩阵操作的库


(1)矩阵乘法: A*B表示矩阵对应位置元素相乘 A.dot(B)表示矩阵的内积(一行乘以一列)

(2)随机函数: np.random.random((3,4)) 创造一个三行四列的随机数矩阵,在(-1,1)之间,10*np.random.random((3,4))表示将随机数扩大十倍

(3)np.floor(a), 表示将元素a向下取整

(4)制造向量或矩阵 np.array([1,2,3]) np.array([[1,2,3],[4,5,6]])

(5)x.shape 输出行列(3,)或(2,3) x.size 求元素的总个数, 
x.reshape((m,n))将原矩阵改成m*n矩阵,只有一个参数,(m,n)

(6)可以通过切片的方式取某行某列 x[:,0:2] 表示取所有行,0,1列,x[1]表示第二行

(7)x.min() x.max() 返回矩阵中的最小值或最大值

(8)x.sum(axis=0)返回对每一列求和的结果 x.sum(axis=1)返回对每一行求和

(9)np.arange(15) 制作一行矩阵,元素为0~14 np.arange(1,10),表示1~9 
可以配合reshape使用,np.arange(15).reshape((3,5)) 
np.range(1,100,5) 表示[1,6,11,16,21,…,96]

(10) np.zeros((4,3)) np.ones((3,4))

(11)x.ravel()表示将一个矩阵铺成一行输出,但实际上这个矩阵没有变,还是原来的行列数

(12)np.hstack((x,y))表示水平拼接矩阵x和y,增加了列数; 
np.vstack((x,y))表示竖直拼接矩阵x和y,增加了行数; 
np.hsplilt((x,3))表示将矩阵x水平方向切成3份;(实际切分的是列) 
np.hsplilt((x,(3,5)))表示将矩阵x水平切成0~2列,3~4列,5~n列; 
np.vsplilt((x,3))表示将矩阵x竖直方向切成3份;(实际切分的是行)

(13)复制的三种做法及区别:(判断a与b是否相同,用a is b 返回True or False) 
b = a // a与b完全一致,指向同样的值,id相同 
b = a.view() // a与b指向同样的值,但是id不同 
b = a.copy() // a与b指向不同的值,并且id不同

(14)l.argmax(axis=0) 返回矩阵l每一列的最大值的索引; 
l.argmax(axis=1) 返回矩阵l每一行的最大值的索引; 
l.argmax() 把矩阵当作一维矩阵返回最大值的索引

(15)b = np.tile(a,(4,3)) ,a是一个矩阵,把a当作一个元素,扩展成4行a,3列a的矩阵

(16)np.sort(a ,axis = 0) 将矩阵a的每一列按照从小到大的顺序排列 
np.sort(a ,axis = 1) 将矩阵a的每一行按照从小到大的顺序排列


2. import pandas as pd 数据预处理的库

* c_name 是列名column_name的简写,字符串类型 
* pandas对象是一个DataFrame对象data,data的每一列取出来,是一个Series对象ss,ss.values又是一个numpy.ndarray对象


(1)data = pandas.read_csv(‘**.csv’) 返回的是DataFrame,看作一个矩阵

(2)data.head(4) 数据的前4行;(DataFrame的对象) 
data.tail(3) 数据的后3行;(DataFrame的对象 
data.columns 显示数据的列名(每一列的属性) 
data.shape 显示数据的(行,列) 
data.loc[0] 取第1行的数据(不包含列名那一行) 
data.loc[:5] 取第1~5行的数据 
data[c_name] 取某一列的的数据,也可以将几个列名组成一个list,作为参数 
data.columns.tolist() 将列名转为list

(3)str.endswith(“(g)”) 判断字符串结尾,返回bool类型

(4)将原数据中加上一个特征(加入一列):data[‘new_column’] = columns 
Columns可以是原数据中的几列处理得到,新加的一列要保证列数与原数据相同

(5)data[c_name].max() 求某一列的最大值

(6)data.sort_values(c_name,inplace=True) 将c_name对应的一列从小到大排序 
ascending参数是升序(从小到大),默认为True; 
inplace=True 是否生成新的DataFrame 
NaN是pandas认为的缺失值,不管是升序还是降序,NaN都排在最后 
排完序之后,数据的index还是原来的,可以调用 data.reset_index(drop=True) 
drop=True表示原来的index不要了,重新生成index

(7)pd.isnull(data[c_name]) 判断该列中的元素是不是缺失值,返回将该列value替 
换成bool值的DataFrame对象 
e.g. age = titanic_survival(‘Age’) 
age_is_null = pd.isnull(age) 
age_null_true = age[age_is_null],返回age为NaN,索引为True 
的DataFrame对象

(8)在计算均值的时候,需要过滤掉缺失值,做法如下: 
good_age = titanic_survival[‘Age’][age_is_null == False] 
mean_age = sum(good_age[‘Age’])/len(good_age) 
pandas里有个mean()方法,自动过滤掉缺失值 
mean_age = titanic_survival[‘Age’].mean()

(9)titanic_survival.pivot_table(index=‘Pclass’,values=’Survived’, 
aggfunc=np.mean) 
如果没有指定aggfunc的话,默认的也是求均值; 
pivot_table:计算不同船仓等级(此处的index),存活人数(此处的values)的均值 
(此处的aggfunc),如果不同的index求和,令 aggfunc=np.sum,values也可以是 
一个list,[’Survived’,’Age’]

(10)data.dropna(axis = 0 ,subset=[‘Age’,’Sex’])表示在Age与Sex两列中有 
没有缺失值,有的话就把该行删除,subset可以缺省,表示所有列

(11)data.loc[83,’Age’],定位第83行,列名为Age的元素

(12)data.apply(yourfunc) apply的参数是你自定义的函数名,然后执行你的函数

(13)data[‘DATE’] = pd.to_datatime(data[‘DATE’]) 

将日期格式2017/11/02转成2017-11-02

(14)data.drop('income',axis=1) 将data中的income列删除赋给新的特征,常用于特征处理

(15)data.describe()

data.columns

data.dtypes

len(data)



3.import matplotlib.pyplot as plt 绘制图像的库


(1)plt.plot(data[‘DATE’],data[‘VALUE’]) 左边的参数表示x轴的数据,右边的 
表示y轴的数据

(2)plt.show() 显示图像

(3)plt.xticks(rotation=45) 将x轴的上坐标值倾斜45度显示

(4)plt.xlable(‘Month’) //x轴加上一个标签 
plt.ylable(‘Unemployment Rate’) //y轴加上一个标签 
plt.title(“Monthly Unemployment Trends,1948”) // 图形加上标题

(5)fig = plt.figure() //返回默认画图的区域 
fig = plt.figure(figsize = (3,4)) //画图的大小width宽度和depth高度 
ax1 = fig.add_subplot(2,2,1) // 将fig划分成 2*2 大小,这是第1个子图 
ax2 = fig.add_subplot(2,2,2) // 将fig划分成 2*2 大小,这是第2个子图 
ax3 = fig.add_subplot(2,2,4) // 将fig划分成 2*2 大小,这是第4个子图 
plt.show()

(6)ax1.plot(np.random.randint(1,5,5),np.arange(5)) // 给子图填充数据

折线图 
(7)plt.plot(data[‘DATE’],data[‘VALUE’],c = ‘red’) // c是颜色 
plt.plot(data[‘DATE’],data[‘VALUE’],c = ‘black’) 
plt.plot(data[‘DATE’],data[‘VALUE’],c = ‘black’,label =‘name’) 
label标签是显示折线图的中该条线的名称

柱形图 
(8)ax.bar(data1,data2,width) // 还可以调用 plt.bar(); 
data1,data2 是一个 numpy.ndarray对象,可以用 np.arange(5)创造 
width 表示的是柱形图的宽度(取小数0.5较好) 
numpy.ndarray对象输出的是[1 2 3 4],跟np.array([1,2,3,4])类似,可看作 
是一维矩阵,它不是一个list对象,list对象输出的是[1,2,3]

散点图 
(9)ax.scatter(data1,data2)或者plt.scatter() 
ax.set_xlabel(“name1”) || plt.xlabel(‘name1’) 
ax.set_ylabel(“name2”) || plt.ylabel(‘name2’)


4. import seaborn as sns 绘制图像的库


(1) iris = sns.load_dataset(‘iris’)//sns库中内置了鸢尾花的数据集 
sns.pairplot(iris)//这个函数自动将iris的四个特征值两两组合作为x轴,y轴,画出函数图像

(2) tips = sns.load_dataset(“tips”)//sns库中内置了小费tips的数据集

(3) regplot()和 lmplot()都可以绘制回归关系,推荐regplot()

(4) sns.regplot(x=’total_bill’,y=’tip’,data=tips) 
//参数依次是:x轴,y轴,data,然后绘制拟合数据点的直线

(5) sns.stripplot(x=‘days’,y=‘bill’,data=tips,jitter=True) 
jitter让数据点左右抖动,免得点重叠在一起( 没有这个属性的话,数据点就像一条线连在一起)

(6) sns.swarmplot(x=‘days’,y=‘bill’,data=tips) 
让数据点分布像一棵树一样

(7) g = sns.FaceGrid(tips,col=’Time’,hue=‘smoker’) 
//tips为pandas对象,col:列,hue:类型名, 
hue需要与 g.add_legend()搭配使用才会显示

(8) g.map(plt.scatter,’x’,’y’) 
//参数说明:指定画图方式,此处为散点;另外两个参数分别是:xlabel,ylabel 
如果第一个参数是plt.hist表示柱状图

猜你喜欢

转载自blog.csdn.net/WONITAWONITAWONITA/article/details/81006667