# 机器学习入门——使用python进行监督学习

Y = f（X）+ C

F表示学生为考试准备的小时数和分数之间的关系 X是输入（他睡觉的小时数） Y是输出（标记在考试中学生的得分） C是随机误差

### 分类

#### 分类中方法

1.KNN算法（K-Nearest Neighbo）

2.决策树

3.朴素贝叶斯

4. 支持向量机

pip install pandas
pip install matplotlib
pip install scikit-learn

from sklearnimport datasets
import pandas as pd
import matplotlib.pyplot as plt

# Prints the type/type object of iris
print(type(iris))
# <class 'sklearn.datasets.base.Bunch'>

# prints the dictionary keys of iris data
print(iris.keys())

# prints the type/type object of given attributes
print(type(iris.data),type(iris.target))

# prints the no of rows and columns in the dataset
print(iris.data.shape)

# prints the target set of the data
print(iris.target_names)

X= iris.data

Y= iris.target

# Convert datasets' type into dataframe
df= pd.DataFrame(X, columns=iris.feature_names)

# Print the first five tuples of dataframe.

<class ‘sklearn.datasets.base.Bunch’>
dict_keys([‘data’, ‘target’, ‘target_names’, ‘DESCR’, ‘feature_names’])]
<class ‘numpy.ndarray’> <class ‘numpy.ndarray’>
(150,4)
[‘setosa’ ‘versicolor’ ‘virginica’]
sepal length (cm) sepal width (cm) petal length (cm) petal width  (cm)
0   5.1   3.5   1.4  0.2
1   4.9   3.0   1.4  0.2
2   4.7   3.2   1.3  0.2
3   4.6   3.1   1.5  0.2
4   5.0   3.6   1.4  0.2

### Scikit-learn中的KNN

KNN是一个惰性学习法。

KNN基于类比学习，比较出给定的测试元组与训练元组的相似度。训练元组由n个特征描述。每个元组代表一个n维空间中的一个点。这样，所有的训练元组都存储在n维模式空间中。当给定未知元组时，KNN分类器在模式空间中搜索最接近未知元组的k个训练元组。这k个训练元组是未知元组的k个“最近邻（nearest neighbor）”。

from sklearnimport datasets
from sklearn.neighborsimport KNeighborsClassifier

# Load iris dataset from sklearn

# Declare an of the KNN classifier class with the value with neighbors.
knn= KNeighborsClassifier(n_neighbors=6)

# Fit the model with training data and target values
knn.fit(iris['data'], iris['target'])

# Provide data whose class labels are to be predicted
X= [
[5.9,1.0,5.1,1.8],
[3.4,2.0,1.1,4.8],
]

# Prints the data provided
print(X)

# Store predicted class labels of X
prediction= knn.predict(X)

# Prints the predicted class labels of X
print(prediction)

[1 1]

0对应的Versicolor 1对应的Virginica 2对应Setosa

（注：都是鸢尾花的种类）

### 回归

#### 回归模型

• 线性回归
• Logistic回归
• 多项式回归

h（xi）=βo+β1* xi + e

Logistic回归是一种算法，可以在响应变量是分类（categorical）时使用。Logistic回归的思想是找出特征和特定结果的概率之间的关系。

p（X）=βo+β1* X

p（x）= p（y = 1 | x）

Logistic回归

#### 解决线性回归问题：

from sklearnimport datasets, linear_model
import matplotlib.pyplot as plt
import numpy as np

# Use only one feature for training
diabetes_X= diabetes.data[:, np.newaxis,2]

# Split the data into training/testing sets
diabetes_X_train= diabetes_X[:-20]
diabetes_X_test= diabetes_X[-20:]

# Split the targets into training/testing sets
diabetes_y_train= diabetes.target[:-20]
diabetes_y_test= diabetes.target[-20:]

# Create linear regression object
regr= linear_model.LinearRegression()

# Train the model using the training sets
regr.fit(diabetes_X_train, diabetes_y_train)

# Input data
print('Input Values')
print(diabetes_X_test)

# Make predictions using the testing set
diabetes_y_pred= regr.predict(diabetes_X_test)

# Predicted Data
print("Predicted Output Values")
print(diabetes_y_pred)

# Plot outputs
plt.scatter(diabetes_X_test, diabetes_y_test, color='black')
plt.plot(diabetes_X_test, diabetes_y_pred, color='red', linewidth=1)

plt.show()

Input Values
[
[0.07786339]  [-0.03961813]  [0.01103904]  [-0.04069594]    [-0.03422907]  [0.00564998]  [0.08864151]  [-0.03315126] [-0.05686312]  [-0.03099563]  [0.05522933]  [-0.06009656]
[0.00133873]  [-0.02345095]  [-0.07410811]  [0.01966154][-0.01590626]  [-0.01590626]  [0.03906215]  [-0.0730303 ]
]
Predicted Output Values
[
225.9732401   115.74763374  163.27610621  114.73638965   120.80385422  158.21988574  236.08568105  121.81509832
99.56772822   123.83758651  204.73711411   96.53399594
154.17490936  130.91629517   83.3878227   171.36605897
137.99500384  137.99500384  189.56845268   84.3990668
]

• 代码：https://github.com/vihar/supervised-learning-with-python

1711 篇文章87 人订阅

0 条评论

## 相关文章

3838

2364

### 机器学习概念总结笔记（三）

C4.5 算法有如下优点：产生的分类规则易于理解，准确率较高。其缺点是：在构造树的过程中，需要对数据集进行多次的顺序扫描和排序，因而导致算法的低效。此外，C4....

7331

2162

3787

### （数据科学学习手札34）多层感知机原理详解&Python与R实现

机器学习分为很多个领域，其中的连接主义指的就是以神经元（neuron）为基本结构的各式各样的神经网络，规范的定义是：由具有适应性的简单单元组成的广泛并行互连...

6329

### IEEE Trans 2007 Signal Recovery From Random Measurements via OMP

看了一篇IEEE Trans上的关于CS图像重构的OMP算法的文章，大部分。。看不懂，之前在看博客的时候对流程中的一些标号看不太懂，看完论文之后对流程有了一...

1975

### 网络节点表示学习论文笔记02—CIKM2015GraRep: 基于全局结构信息的图结点表示学习

【导读】这次论文笔记介绍了介绍一种具有代表性的网络节点表示学习（NRL）方法：GraRep。以LINE为代表的一系列NRL算法一些网络上具有很好地学习效果，但它...

7137

3845

42610