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

7d1d9ef99d8385fa0a59f052475a9e8b.png

机器学习步骤:(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)

5936cc97bd29f06f3acf4b320d629110.png
examDf.head()

4ee83593810ffd6180d6fccb007a3e57.png
#提取特征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()

73660ee172cba8b4accb0df87efd0b0e.png

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

546d3f44b4d20c41dbe40473e04b0ee9.png
#将训练集特征转化为二维数组**行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()

4d5f77b9dfd924475739e9f86c07a468.png

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()

8f9a7704ab4bbf5aee9292334183669f.png

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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值