Pandas是Python下非常强大的数据分析工具。它建立在NumPy之上,功能很强大,支持类似SQL的增删改查,并具有丰富的数据处理函数,支持时间序列分析功能,支持灵活处理缺失数据等。
Pandas基本数据结构是Series和DataFrame。Series就是序列,类似一维数组,DataFrame则相当于一张二维表格,类似二维数组,它每一列都是一个Series。为定位Series中的元素,Pandas提供了Index对象,类似主键。
DataFrame本质上是Series的容器。
示例:Pandas简单操作
import pandas as pd
s = pd.Series([1, 2, 3], index=['a', 'b', 'c'])
d = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15], [16, 17, 18]], columns=['a', 'b', 'c'])
d2 = pd.DataFrame(s)
print(s)
print(d.head) # 预览前5行
print(d.describe)
# 读取文件(路径最好别带中文)
df=pd.read_csv("G:\\data.csv", encoding="utf-8")
print(df)
输出:
a 1
b 2
c 3
dtype: int64
a b c
a b c
count 6.000000 6.000000 6.000000
mean 8.500000 9.500000 10.500000
std 5.612486 5.612486 5.612486
min 1.000000 2.000000 3.000000
25% 4.750000 5.750000 6.750000
50% 8.500000 9.500000 10.500000
75% 12.250000 13.250000 14.250000
max 16.000000 17.000000 18.000000
Empty DataFrame
Columns: [1068, 12, 蔬果, 1201, 蔬菜, 120104, 花果, 20150430, 201504, DW-1201040010, 散称, 生鲜, 千克, 0.973, 5.43, 2.58, 否]
Index: []
Scikit-Learn
Scikit-Learn依赖NumPy、Scipy和Matplotlib,是Python中强大的机器学习库,提供了诸如数据预处理、分类、回归、聚类、预测和模型分析等功能。
示例:创建线性回归模型
from sklearn.linear_model import LinearRegression
model= LinearRegression
print(model)
所有模型都提供的接口:
model.fit:训练模型,监督模型是fit(X,y),无监督模型是fit(X)
监督模型提供的接口:
model.predict(X_new):预测新样本
model.predict_proba(X_new):预测概率,仅对某些模型有用(LR)
无监督模型提供的接口:
model.ransform:从数据中学到新的“基空间”
model.fit_transform:从数据中学到的新的基,并将这个数据按照这组“基”进行转换
Scikit-Learn本身自带了一些数据集,如花卉和手写图像数据集等,下面以花卉数据集举个栗子,训练集包含4个维度——萼片长度、宽度,花瓣长度和宽度,以及四个亚属分类结果。
示例:
from sklearn import datasets # 导入数据集
from sklearn import svm
iris = datasets.load_iris # 加载数据集
clf = svm.LinearSVC # 建立线性SVM分类器
clf.fit(iris.data, iris.target) # 用数据训练模型
print(clf.predict([[5, 3, 1, 0.2], [5.0, 3.6, 1.3, 0.25]]))
输出:
[0 0]
Keras
Keras是基于Theano的深度学习库,它不仅可以搭建普通神经网络,还可以搭建各种深度学习模型,如自编码器、循环神经网络、递归神经网络、卷积神经网络等,运行速度也很快,简化了搭建各种神经网络模型的步骤,允许普通用户轻松搭建几百个输入节点的深层神经网络,定制度也很高。
示例:简单的MLP(多层感知器)
from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation
from keras.optimizers import SGD
model = Sequential # 模型初始化
model.add(Dense(20, 64)) # 添加输入层(20节点)、第一隐藏层(64节点)的连接
model.add(Activation('tanh')) # 第一隐藏层用tanh作为激活函数
model.add(Dropout(0.5)) # 使用Dropout防止过拟合
model.add(Dense(64, 64)) # 添加第一隐藏层(64节点)、第二隐藏层(64节点)的连接
model.add(Activation('tanh')) # 第二隐藏层用tanh作为激活函数
model.add(Dense(64, 1)) # 添加第二隐藏层(64节点)、输出层(1节点)的连接
model.add(Activation('sigmod')) # 第二隐藏层用sigmod作为激活函数
sgd=SGD(lr=0.1,decay=1e-6,momentum=0.9,nesterov=True) # 定义求解算法
model.compile(loss='mean_squared_error',optimizer=sgd) # 编译生成模型,损失函数为平均误差平方和
model.fit(x_train,y_train,nb_epoch=20,batch_size=16) # 训练模型
score = model.evaluate(X_test,y_test,batch_size=16) # 测试模型
参考:
Keras中文文档
如何计算两个文档的相似度(二)