python数据与挖掘实战学习:第二章Python数据分析简介 笔记

第二章 Python数据分析简介

2.1 python数据分析工具

扩展库简介
Numpy提供数组支持,以及相应的高效的处理函数
Scipy提供矩阵支持,以及矩阵相关的数值计算模块
Matplotlib强大的数据可视化工具、作图等
Pandas强大、灵活的数据分析和探索工具
StatsModels统计建模和计量经济学,包括描述统计、统计模型估计和推断
Scikit-Learn支持回归、分类、聚类等强大的机器学习库
Keras深度学习库,用于建立神经网络以及深度学习模型
Gensim用来做文本主题模型的库,文本挖掘可能用到

2.1.1 Numpy

基本操作

import numpy as np

a = np.array([2, 0, 1, 5])  # 创建数组
print(a)  # 打印
print(a[:3])  # 对数组切片,输出前三个数组元素
print(a.min())  # 输出a的最小值
a.sort()  # 将a的元素从小到大排序,会直接修改a
b = np.array([[1, 2, 3], [4, 5, 6]])  # 创建二维数组
print(b * b)  # 输出数组的平方阵,这里是对应元素相乘

'''
输出结果:
[2 0 1 5]
[2 0 1]
0
[[ 1  4  9]
 [16 25 36]]
'''

2.1.2 Scipy

# Scipy求解非线性方程组和数值积分 2x1-x2^2=1,x1^2-x2=2
from scipy.optimize import fsolve  # 导入求解方程组的函数
def f(x):  # 定义要求解函数
    x1 = x[0]
    x2 = x[1]
    return [2*x1 - x2**2 -1, x1**2 - x2 - 2]
result = fsolve(f, [1, 1])  # 输入初值[1,1]并求解
print(result)  # 输出 结果[1.91963957 1.68501606]

# 数值积分
from scipy import integrate  # 导入积分函数
def g(x):
    return (1-x**2)**0.5
pi_2, err = integrate.quad(g, -1, 1)  # 积分结果和误差
print(pi_2 * 2)  # 积分结果为圆周率的一半

'''
输出结果
[1.91963957 1.68501606]
3.1415926535897967
'''

2.1.3 Matplotlib

# Matplotlib绘图
import matplotlib.pyplot as plt  # 导入

x = np.linspace(0, 10, 1000)  # 自变量
y = np.sin(x) + 1  # 因变量y
z = np.cos(x**2) + 1  # 因变量z

plt.figure(figsize=(8, 4))  # 设置图像大小
plt.plot(x, y, label='$\sin(x+1)$', color='red', linewidth=2)  # 作图,设置标签、线条颜色,线条宽度
plt.plot(x, z, 'b--', label='$\cos(x^2+1)$')
plt.xlabel('Time(s)')  # x轴名称
plt.ylabel('Volt')  # y轴名称
plt.title('A Simple Example')  # 标题
plt.ylim(0, 2.2)  # 显示的y轴范围
plt.legend()  # 显示图例
plt.show()  # 显示作图结果

输出图片

2.1.4 Pandas

Python最主要的数据分析——pandas
pandas基本的数据结构是Series和DataFrame。前者是序列,类似一维数组;后者是二维表格,类似二维数组,每一列是一个Series。

# Pandas简单例子
import pandas as pd

s = pd.Series([1, 2, 3], index=['a', 'b', 'c'])  # 创建一个序列s
d = pd.DataFrame([[1, 2, 3], [4, 5, 6]], columns=['a', 'b', 'c'])  # 创建一个表
d2 = pd.DataFrame(s)  # 可用序列创建表格

print(d.head())  # 预览前5行数据
print(d.describe())  # 数据基本统计量

d = pd.read_excel('学生基本信息.xls')  # 读取Excel文件,创建DataFrame对象,这里读取官方提供的数据文件
print(d)
# 也可以用pd.read_csv()  读取csv文件
'''
输出
   a  b  c
0  1  2  3
1  4  5  6
             a        b        c
count  2.00000  2.00000  2.00000
mean   2.50000  3.50000  4.50000
std    2.12132  2.12132  2.12132
min    1.00000  2.00000  3.00000
25%    1.75000  2.75000  3.75000
50%    2.50000  3.50000  4.50000
75%    3.25000  4.25000  5.25000
max    4.00000  5.00000  6.00000
    名字      班级 性别  身高(cm)  体重(kg)
0   小王  高一(1)班  男     160      45
1   丽丽  高一(2)班  女     158      48
2   王涛  高一(5)班  男     170      55
3   晓莹  高一(8)班  女     165      50
4   宁诚  高一(3)班  女     168      49
5  叶思雨  高一(9)班  女     155      45
6   赵锋  高一(4)班  男     162      52
7   陆露  高一(6)班  女     150      55
8   吴成  高一(7)班  男     172      51
'''

2.1.5 StatsModels

StatsModels更加注重数据的统计建模分析,支持与Pandas进行数据交互。

# 用StatsModels 进行ADF平稳检验
from statsmodels.tsa.stattools import adfuller as ADF  # 导入ADF检验
print(ADF(np.random.rand(100)))  # 返回的结果有ADF值、p值等
'''
输出:
(-9.464661879817763, 4.261843454585112e-16, 0, 99, {'1%': -3.498198082189098, '5%': -2.891208211860468, '10%': -2.5825959973472097}, 26.58397443489116)
'''

ADF检验是用于检测时间序列模型是否平稳,在之后的学习会涉及到

2.1.6 Scikit-Learn

Scikit-Learn 提供了完善的机器学习工具箱,包括数据预处理、分类、回归、聚类、预测和模型分析等。

# 创建机器学习模型
from sklearn.linear_model import LinearRegression  # 导入线性回归模型
model = LinearRegression()  # 建立线性回归模型
print(model)

Scikit-Learn提供的模型接口

  • 所有模型提供的接口有:
    • model.fit():训练模型,对于监督模型来说是fit(X,y),对于非监督模型来是fit(X)。
  • 监督模型提供的接口有:
    • model.predict(X_new):预测新样本
    • model.predict_proba(X_new):预测概率,仅对某些模型有用(比如LR)
    • model.score():得分越高,fit越好
  • 非监督模型提供的接口有:
    • model.transform():从数据中学到新的“基空间”
    • model.fit_transform():从数据中学到新的基并将这个数据按照这组“基”进行转换

Scikit-Learn还提供了一些实例数据供于测试。

# 库提供的实例数据测试
from sklearn import datasets  # 导入数据集
iris = datasets.load_iris()  # 加载数据
print(iris.data.shape)  # 查看数据集大小

from sklearn import svm  # 导入svm模型
clf = svm.LinearSVC()  # 建立线性svm分类器
clf.fit(iris.data, iris.target)  # 用数据训练模型
clf.predict([[5.0, 3.6, 1.3, 0.25]])  # 训练模型之后,输入新数据进行预测
print(clf.coef_)  # 查看训练好模型的参数
'''
输出
(150, 4)
[[ 0.18424588  0.4512314  -0.8079421  -0.45071554]
 [ 0.05731289 -0.89596338  0.40326887 -0.95366612]
 [-0.85067554 -0.98685598  1.38089201  1.86550333]]
'''

在这里程序会发出警告:
ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.warnings.warn(
参考ConvergenceWarning知道了解决方法:
修改:svm的LinearSVC的参数max_iter默认值为1000,改为更大的值,这里将其改为10000
clf = svm.LinearSVC(max_iter=10000)
程序不再警告

2.1.7 Keras

Keras是一个基于Theano的强大的深度学习库,利用它不仅仅可以搭建普通的神经网络,还可以搭建各种深度学习模型。
Keras依赖包除了Numpy、Scipy以外,还有Theano。

2.1.8 Gensim

Gensim是用来处理语言方面的任务,如文本相似度计算、LDA、Word2Vec等。

在这里不测试Keras和Gensim包,因为在pycharm中导入失败,为继续接下来的学习,计划等需要运用到该两个包时再进行查询安装。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值