第二章:Python数据分析简介

2.1Scipy求解非线性方程组和数值积分
#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)

#数值积分
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.2Matplotlib作图基本代码
import numpy as np
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 + 1$')  #作图、设置标签、线条类型

plt.xlabel('Time(s)')
plt.ylabel('Vlot')
plt.title('A simple Example')
plt.ylim(0,2.2)  #Y轴范围
plt.legend()    #显示图像
plt.show()      #显示作图结果
1.2.png

如果使用的是中文标签,就会发现中文标签无法正常显示,这是由于Matplotlib的默认字体是因为所致,解决它的办法使在作图之前手动指定莫名人字体为中文字体:
plt.rcParams['font.sans-serif'] = ['SimHei']
另外作图图像时,负号有可能显示不正常,可以通过如下代码解决:
plt.rcParams['axes.unicode_minus'] = False

2.3 Pandas

Pandas的基本数据结构是SeriesDataFrame :
顾名思义,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)    #也可以用已有的序列来创建表

d.head()    #预览前面五行;可以指定行数,默认为5
d.describe()    #数据的基本统计量

#读取文件,注意文件的路径不能包含中文,否则会出现读取出错; 
pd.read_excel('data.xls')
pd.read_csv('data.csv',encoding='utf-8')
Scikit-learn:包括数据预处理、分类、回归、聚类、预测和模型分析等。

创建一个机器学习的模型很简单:

>>> from sklearn.linear_model import LinearRegression   #导入线性回归模型
>>> model = LinearRegression()  #建立线性回归模型
>>> print(model)
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)

1、所有模型提供的接口有:
model.fit():训练模型,对于监督模型来说是fit(X,y),对于非监督模型是fit(X)
2、监督模型提供的接口有:
model.predict(x_new):预测新样本
model.predict_proba(x_new):预测概率,仅对某些模型有用;
model.score()得分越高,fit越好;
3、非监督模型提供的接口有:
model.transform():从数据中学到新的‘基空间’;
model.fit_transform();

>>> from sklearn import datasets
>>> iris = datasets.load_iris()  #加载数据集
>>> print(iris.data.shape)          #查看数据集的大小
(150, 4)

>>> from sklearn import svm
>>> clf = svm.LinearSVC()        #建立线性SVM费雷器
>>> clf.fit(iris.data,iris.target)      #利用数据训练模型
LinearSVC(C=1.0, class_weight=None, dual=True, fit_intercept=True,
     intercept_scaling=1, loss='squared_hinge', max_iter=1000,
     multi_class='ovr', penalty='l2', random_state=None, tol=0.0001,
     verbose=0)
>>> clf.predict([[5.0,3.6,1.3,0.25]])   #训练好模型之后,输入新的数据进行预测
array([0])
>>> clf.coef_      #查看训练好的模型参数
array([[ 0.1842471 ,  0.45122887, -0.80794272, -0.45071278],
       [ 0.05155259, -0.89040842,  0.40569903, -0.93992706],
       [-0.85075287, -0.986624  ,  1.38095769,  1.86527694]])
Keras:神经网络(基于Theano的强大深度学习库)

Theano是用来定义、优化和高效的解决多维数组数据对应数学表达式的模拟估计问题;
用Theano就可以搭建起高效的神经网络模型,但是对于普通读者来说门栏还是很高的,keras为此而生,他大大简化了搭建各种神经网络模型的步骤;

你可能感兴趣的:(第二章:Python数据分析简介)