天天看点

python Series 添加行_Python机器学习(入门)

python Series 添加行_Python机器学习(入门)
机器学习步骤:(python机器学习包sklearn)

1.提出问题

2.理解数据

3.数据清洗

4.构建模型

5.评估模型

一:简单线性回归

1.数据集

from collections import OrderedDict
import pandas as pd
examDict={'学习时间':[0.5,0.75,1.00,1.25,1.50,1.75,1.75,2.00,2.25,2.50,2.75,3.00,3.25,3.50,4.00,4.25,4.50,4.75,5.00,5.50],
          '分数':[10,22,13,43,20,22,33,50,62,48,55,75,62,73,81,76,64,82,90,93]
}
examOrderDict=OrderedDict(examDict)
examDf=pd.DataFrame(examOrderDict)
           
python Series 添加行_Python机器学习(入门)
examDf.head()
           
python Series 添加行_Python机器学习(入门)
#提取特征features
exam_X=examDf.loc[:,'学习时间']
#提取标签label
exam_y=examDf.loc[:,'分数']
           

2作图看分布情况

#散点图matplotlib
import matplotlib.pyplot as plt
plt.scatter(exam_X,exam_y,color="b",label="exam data")
#添加图标
plt.xlabel("Hours")
plt.ylabel("Score")
#显示图像
plt.show()
           
python Series 添加行_Python机器学习(入门)

3#建立训练集和测试集

from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test=train_test_split(exam_X,
                                              exam_y,
                                              train_size= .8)
#输出特征和标签
print('原始数据特征:',exam_X.shape,
     '训练集数据特征:',X_train.shape,
     '测试集数据特征:',X_test.shape)
print('原始数据标签:',exam_X.shape,
     '训练集数据标签:',y_train.shape,
     '测试集数据标签:',y_test.shape)
print(type(X_train))
           

原始数据特征: (20,) 训练集数据特征: (16,) 测试集数据特征: (4,) 原始数据标签: (20,) 训练集数据标签: (16,) 测试集数据标签: (4,) <class 'pandas.core.series.Series'>

#相关系数矩阵
rDf=examDf.corr()
rDf
           
python Series 添加行_Python机器学习(入门)
#将训练集特征转化为二维数组**行1列
X_train=X_train.reshape(-1,1)
#将测试集特征转化为二维数组**行1列
X_test=X_test.reshape(-1,1)
           

4#训练模型

from sklearn.linear_model import LinearRegression
model=LinearRegression()
model.fit(X_train,y_train)
           

LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)

#最佳拟合线
a=model.intercept_
b=model.coef_
print('最佳拟合线:截距为',a,',回归系数为',b)
           

最佳拟合线:截距为 5.83626318433 ,回归系数为 [ 17.02461075]

5#评估模型精确度:决定系数R平方看模型拟合程度

model.score(X_test,y_test)
           

0.81147243948428172

二:逻辑回归LogisticRegression———分类问题

1.导入数据

#逻辑回归
#数据集
from collections import OrderedDict
import pandas as pd
examDict={'学习时间':[0.5,0.75,1.00,1.25,1.50,1.75,1.75,2.00,2.25,2.50,2.75,3.00,3.25,3.50,4.00,4.25,4.50,4.75,5.00,5.50],
         '通过考试':[0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,1,1,1,1,1]}
examOrderDict=OrderedDict(examDict)
examDf=pd.DataFrame(examOrderDict)
examDf.head()
           
python Series 添加行_Python机器学习(入门)

2.绘制散点图

import matplotlib.pyplot as plt
plt.scatter(exam_X,exam_y,color="b",label="exam data")
plt.xlabel("Hours")
plt.ylabel("Pass")
plt.show()
           
python Series 添加行_Python机器学习(入门)

3.提取特征和标签

#提取特征feature
exam_X=examDf.loc[:,'学习时间']
#提取标签labels
exam_y=examDf.loc[:,'通过考试']
           

4.建立训练集和测试集

from sklearn.model_selection import train_test_split
X_train,y_train,X_test,y_test=train_test_split(exam_X,
                                              exam_y,
                                              train_size=0.8)
#输出特征和标签
print('原始数据特征:',exam_X.shape,
     '训练集数据特征:',X_train.shape,
     '测试集数据特征:',X_test.shape)
print('原始数据标签:',exam_X.shape,
     '训练集数据标签:',y_train.shape,
     '测试集数据标签:',y_test.shape)
print(type(X_train))
           

原始数据特征: (20,) 训练集数据特征: (16,) 测试集数据特征: (4,)

原始数据标签: (20,) 训练集数据标签: (16,) 测试集数据标签: (4,)

<class 'pandas.core.series.Series'>

#将训练集特征转化为二维数组**行1列
X_train=X_train.reshape(-1,1)
#将测试集特征转化为二维数组**行1列
X_test=X_test.reshape(-1,1)
           

5.训练模型

#第一步:导入逻辑回归
from sklearn.linear_model import LogisticRegression
#创建模型
model=LogisticRegression()
#训练模型
model.fit(X_train,y_train)
           

LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,

intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,

penalty='l2', random_state=None, solver='liblinear', tol=0.0001,

verbose=0, warm_start=False)

6.#评估模型

model.score(X_test,y_test)
           

0.75

7.预测通过考试的概率

(1)predict_proba函数:

#实施模型
model.predict_proba(3)
           

array([[ 0.33884591, 0.66115409]])

(2)predict函数:

#预测数据:使用模型的predict方法可以进行预测。这里我们输入学生的特征学习时间3小时,模型返回结果标签是1,表示预测该学生通过考试。
pred=model.predict([[3]])
print(pred)
           

[1]

(3)逻辑函数:

import numpy as np
a=model.intercept_
b=model.coef_
x=3
z=a+b*x
pred_Y=1/(1+np.exp(-z))
print('预测的概率值:',pred_Y)
           

预测的概率值: [[ 0.66115409]]

表明:学习时间为3小时,通过考试的概率为66.1%

三种数据类型:
  • 数值数据(定量数据)
  • 分类数据(定性数据)
  • 时间序列数据(连续数据)

总结:

  1. 特征(features):数据的特点,标签(labels):数据的预测结果

2.训练数据和测试数据训练数据是建立机器学习模型,测试数据是验证模型的正确率

3. 分类问题:1)本质:决策面(decision surface,D.S.)

2) 评估分类算法的指标,正确率=正确分类个数/总个数

4. 逻辑回归:1)逻辑回归用于二分分类问题

2)逻辑函数(sigmoid function)

5. 逻辑回归python实现:1)建立训练集和测试集:sklearn的train_test_split

2) 逻辑回归:sklearn的LugisticRegression

6. 三种数据类型:1)数值数据

2)分类数据

3)时间序列数据

7. 分类和回归的区别

8. 机器学习算法和机器学习模型的区别:机器学习模型=机器算法+训练数据

三:机器学习算法

1. 随机森林

from sklearn.ensemble import RandomForestClassifier
model=RandomForestClassifier(n_estimators=100)
           

2. 支持向量机SVM

from sklearn.svm import SVC,LinearSVC
model=SVC()
           

3.Gradient Boosting Classifier

from sklearn.ensemble import GradientBoostingClassifier
model= GradientBoostingClassifier()
           

4.K_nearest neighbors

from sklearn.neighbors import KNeighborsClassifier
model=KNeighborsClassifier(n_neighbors=3)
           

5.Gaussian Naive Bayes

from sklearn.naive_bayes import GaussianNB
model=GaussianNB()