数据挖掘学习-准备篇-python基础
python科学计算
1.使用python内置数据集
>>> print(iris.data)[[ 0. 0. 5. ..., 0. 0. 0.] [ 0. 0. 0. ..., 10. 0. 0.] [ 0. 0. 0. ..., 16. 9. 0.] ..., [ 0. 0. 1. ..., 6. 0. 0.] [ 0. 0. 2. ..., 12. 0. 0.] [ 0. 0. 10. ..., 12. 1. 0.]]
2.使用svm
>>> fromsklearnimportsvm>>> clf=svm.SVC(gamma=0.001,C=100.)
3.拟合fit和predict
fit(X, y) 和 predict(T).
X,y=iris.data,iris.target
4.获取数组的大小——shape属性
iris.shape
得(28,19)
5.target
改写说明
6.pickle来保存scikit中的模型
import pickle
s = pickle.dumps(clf)
clf2 = pickle.loads(s)
7.Estimators对象
一个estimator也可能是基于数据推导出来的对象;它也可能是分类算法(classification)、回归算法(regression)、聚类算法(clustering),或者其他类型的转换工具
无论采用何种算法,在线任何 estimator 实例都会对外公开一个 fit 方法,并且该方法的作用域是一个数据集。
该估计器的所有参数可以在初始化时设置,并且同样可以通过指定属性进行修改:
>>> estimator=Estimator(param1=1,param2=2)>>> estimator.param1
predict(X) 用于预测数据集 X 中的未知标签的样本,并返回预测的标签 y.
每个estimator提供了一个计算其在测试数据上得分的方法:通过调用score()函数获取该值,并且该值越高表示该估计器对数据的拟合效果越好
8.KNN (k nearest neighbors) 分类器例子:
>>> # Split iris data in train and test data>>> # A random permutation, to split the data randomly>>> np.random.seed(0)>>> indices=np.random.permutation(len(iris_X))>>> iris_X_train=iris_X[indices[:-10]]>>> iris_y_train=iris_y[indices[:-10]]>>> iris_X_test=iris_X[indices[-10:]]>>> iris_y_test=iris_y[indices[-10:]]>>> # Create and fit a nearest-neighbor classifier>>> fromsklearn.neighborsimportKNeighborsClassifier>>> knn=KNeighborsClassifier()>>> knn.fit(iris_X_train,iris_y_train)KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski', metric_params=None, n_jobs=1, n_neighbors=5, p=2, weights='uniform')>>> knn.predict(iris_X_test)array([1, 2, 1, 0, 0, 0, 2, 1, 2, 0])>>> iris_y_testarray([1, 1, 1, 0, 0, 0, 2, 1, 2, 0])
通过Python编程语言实现解析CSV数据文件的标准库主要包含csv模块功能模块。具体而言,在Python中处理CSV文件主要依赖于标准库当中的csv模块功能模块,在其中主要实现了writer和reader功能模块来完成数据读取与 writes操作。
import csv
rf = open('bank.csv','rb')
reader = csv.reader(rf)
此处需要注意,在读取一个CSV文件时,请确保以二进制形式进行操作以避免数据解析问题。
此时的reader作为一个迭代器对象,在程序设计中通常仅允许通过调用next()方法和for循环来获取数据。
通过调用next()方法可以获得第一行的内容。
要看得到所有内容,就可以使用for循环了。
for row in reader: print row
接下来,来看写入csv文件。
wf = open('bank2.csv','wb')
writer = csv.writer(wf)
writer.writerow(['id','age','sex','region','income','married','children','car','save_act','current_act','mortgage','pep'])
writer.writerow(reader.next())
10.线性回归LR
最基础的线性回归形式是通过调整参数集合对数据集建立线性模型,使计算出的模型预测值与实际观测值之间的差异最小化。
线性模型:


: 数据

: 目标变量

: 系数

: 观测噪声
>>> fromsklearnimportlinear_model
>>> regr = linear_model.LinearRegression()
>>> regr.fit(diabetes_X_train, diabetes_y_train)
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)
>>> print(regr.coef_)
[ 0.30349955 -237.63931533 510.53060544 327.73698041 -814.13170937
81458798 102.84845219 184.60648906 743.51961675 76.09517222]
>>> # The mean square error
>>> np.mean((regr.predict(diabetes_X_test)-diabetes_y_test)**2)
2004.56760268...
>>> # Explained variance score: 1 is perfect prediction
>>> # and 0 means that there is no linear relationship
>>> # between X and Y.
>>> regr.score(diabetes_X_test, diabetes_y_test)
0.5850753022690...
11.把数据集拆分成 folds 用于训练和测试
>>> importnumpyasnp>>> X_folds=np.array_split(X_digits,3)>>> y_folds=np.array_split(y_digits,3)
12.交叉验证生成器
交叉验证器 (cross-validation generators)用于生成一个索引列表以实现数据的分割目标:
>>> fromsklearnimportcross_validation>>> k_fold=cross_validation.KFold(n=6,n_folds=3)>>> fortrain_indices,test_indicesink_fold:... print('Train: %s | test: %s'%(train_indices,test_indices))Train: [2 3 4 5] | test: [0 1]Train: [0 1 4 5] | test: [2 3]Train: [0 1 2 3] | test: [4 5]
基于交叉验证生成器,交叉验证的实现将会变得非常简单轻松:
>>> kfold=cross_validation.KFold(len(X_digits),n_folds=3)>>> [svc.fit(X_digits[train],y_digits[train]).score(X_digits[test],y_digits[test])... fortrain,testinkfold][0.93489148580968284, 0.95659432387312182, 0.93989983305509184]
为了获取一个estimator的评估方法结果, sklearn提供了一个次要的方法:
>>> cross_validation.cross_val_score(svc,X_digits,y_digits,cv=kfold,n_jobs=-1)array([ 0.93489149, 0.95659432, 0.93989983])
13.Numpy库
(1)会求均值、方差、协方差
平均值—— mean()求均值
print('残差平均值: %.2f' % np.mean((model.predict(X) - y) ** 2) )
方差—— var()求方差
print (np. var ([ 6 , 8 , 10 , 14 , 18 ], ddof= 1 )) #numpy.var()可以直接计算方差
协方差——cov()求协方差
print(np.cov([ 6, 8, 10, 14, 18 ], [ 7, 9, 13, 17.5, 18 ])[ 0 ][ 1 ]) #numpy.cov()计算协方差
(2)矩阵计算-求逆inv,点乘dot,转置transpose
(3) 使用lstsq()求最小二乘法
14.Sklearn库
(1)将使用linear_model.LinearRegression构建线性回归模型,并根据需要选择自变量数量为一元还是多元;通过LinearRegression与PolynomialFeatures相结合的方式构建一元多次线性回归模型;同时采用linear_model.SGDRegressor技术实现随机梯度下降算法。
(2)通过调用model.fit()方法来构建模型;随后利用model.predict()函数来进行预测;最后通过调用model.score()获取测试集上的R-Square值作为评估指标;
(3)利用交叉验证方法,并将采用train_test_split()函数来划分训练集和测试集;同时使用cross_val_score()来评估模型的交叉验证表现。
调入线性回归函数LinearRegression;
fit()建立一元线性回归模型
fit()建立多元线性回归模型
由这些参数构成的模型用于对解释变量进行预测所得的结果;
mode.score计算R方R-Square
建立一元多项式回归模型
该函数用于将数据集合划分为训练子集与验证子集;划分比例可自行配置,默认情况下将25%的数据分配为测试样本
- ``
train_size改变训练集和测试集的比例
cross_val_score()可以返回交叉检验的score结果;
加载scikit-learn数据集
加载SGDRegressor,归一化StandardScaler,建立模型以及求R-Square
15.list索引号
通过调用enumerate()函数进行循环,并获取数组元素的索引值idx以及数值位置val。
17.linspace()将区间进行划分
将区间划分arange和linsapce,
前者是以起点为基准按照设定的步长进行分割仅当终点的位置恰好是步长的整数倍时才被包含在内
后者是将起点和终点中间等距划分,终点位最后一位数;
18.使用LogisticRegression分类器进行训练和分类
19.基本用法-Math
基础的数学运算中
基础的数学运算中
基础的数学运算中
基础的数学运算中
在Python编程中涉及的数学运算涵盖基本运算(如加减乘除)、三角学函数(包括正弦、余弦等)、反三角学函数(如反正弦、反余弦)以及指数与对数操作。编程时应确保已导入math模块。
20.numpy.linalg.eig()计算特征值和特征向量
sklearn用户手册
