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() #显示作图结果
如果使用的是中文标签,就会发现中文标签无法正常显示,这是由于
Matplotlib
的默认字体是因为所致,解决它的办法使在作图之前手动指定莫名人字体为中文字体:
plt.rcParams['font.sans-serif'] = ['SimHei']
另外作图图像时,负号有可能显示不正常,可以通过如下代码解决:
plt.rcParams['axes.unicode_minus'] = False
2.3 Pandas
Pandas的基本数据结构是
Series
和DataFrame
:
顾名思义,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为此而生,他大大简化了搭建各种神经网络模型的步骤;