2019/12/23
- 对于机器学习,我们选择了Python
原因就是巴拉巴拉的一大堆。Python 已经成为许多数据科学应用的通用语言。它既有通用编程语言的强大功能,也有特 定领域脚本语言(比如 MATLAB 或 R)的易用性。Python 有用于数据加载、可视化、统 计、自然语言处理、图像处理等各种功能的库。
- 然后我们要了解一个东西——scikit-learn。
scikit-learn 是一个开源项目,包含许多目前最先进的机器学习算法,每个算法都有详细的文档。建议浏览 scikit-learn 用户指南。
了解 scikit-learn 及其用法是很重要的,scikit-learn 是基于NumPy 和 SciPy 科学计算库的。如果不熟悉 NumPy 和 SciPy 科学计算库,推荐阅读SciPy 讲稿。
什么是NumPy?——创建和处理数值数据
什么是Matplotlib?——绘图 ( 参考博客1 、参考博客2、参考博文3都是一些参数什么含义,在官方文档中没搞懂)
####下面是一些简单的绘图设置
import numpy as np
import matplotlib.pyplot as plt
# Create a figure of size 8x6 inches, 80 dots per inch
#创建一个大小8*6英寸,每英寸80个点的图形
plt.figure(figsize=(8, 6), dpi=80)
# Create a new subplot from a grid of 1x1
#创建一个1*1网格的新图形窗口
plt.subplot(1, 1, 1)
X = np.linspace(-np.pi, np.pi, 256, endpoint=True)
C, S = np.cos(X), np.sin(X)
# Plot cosine with a blue continuous line of width 1 (pixels)
#绘制余弦,其连续线宽为1(像素),颜色为蓝色。
plt.plot(X, C, color="blue", linewidth=1.0, linestyle="-")
# Plot sine with a green continuous line of width 1 (pixels)
#绘制正弦,其连续线宽为1(像素),颜色为绿色。
plt.plot(X, S, color="green", linewidth=1.0, linestyle="-")
# Set x limits
#设置x轴范围
plt.xlim(-4.0, 4.0)
# Set x ticks
#设置x轴刻度
plt.xticks(np.linspace(-4, 4, 9, endpoint=True))
# Set y limits
#设置y轴范围
plt.ylim(-1.0, 1.0)
# Set y ticks
#设置y轴刻度
plt.yticks(np.linspace(-1, 1, 5, endpoint=True))
# Save figure using 72 dots per inch
#保存一个每英寸72个像素点的图像
plt.savefig("exercise_2.png", dpi=72)
# Show result on screen
#在屏幕上显示结果图
plt.show()
关于scipy?——高级科学计算
Special functions: scipy.special
Linear algebra operations: scipy.linalg
Interpolation: scipy.interpolate
Optimization and fit: scipy.optimize
Statistics and random numbers: scipy.stats
Numerical integration: scipy.integrate
Fast Fourier transforms: scipy.fftpack
Signal processing: scipy.signal
Image manipulation: scipy.ndimage
- 简要了解一下Jupyter Notebook
使用过pycharm,也用过VS,后来换电脑懒的下载一堆软件,下载Anaconda之后就直接用它自带的Spyder。因为总感觉在网页中打开Jupyter Notebook,单纯的不太习惯不是客户端的感觉。但是本书推荐使用Jupyter Notebook。便于测试用例。
接下来学习本书中第一个应用。
2019/12/25
- 第一个应用:鸢尾花分类
看了两天上面提到的python库,简单的了解了一下,接着通过k近邻算法实现鸢尾花分类。
from sklearn.datasets import load_iris
iris_dataset = load_iris()
# print("Keys of iris_dataset:\n{}".format(iris_dataset.keys()))
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test = train_test_split(
iris_dataset['data'],iris_dataset['target'],random_state=0)
#print("X_train shape: {}".format(X_train.shape))
#print("y_train shape: {}".format(y_train.shape))
import numpy as np
import pandas as pd
# 利用X_train中的数据创建DataFrame
# 利用iris_dataset.feature_names中的字符串对数据列进行标记
#iris_dataframe = pd.DataFrame(X_train, columns=iris_dataset.feature_names)
# 利用DataFrame创建散点图矩阵,按y_train着色
#grr = pd.plotting.scatter_matrix(iris_dataframe, c=y_train, figsize=(15, 15), marker='o',
# hist_kwds={'bins': 20}, s=60, alpha=.8)
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=1)
knn.fit(X_train,y_train)
###做出预测###
X_new = np.array([[5,2.9,1,0.2]])
#print(X_new.shape)
#print("X_new.shape:{}".format(X_new.shape))
prediction = knn.predict(X_new)
#print("Prediction:{}".format(prediction))
#print("Predicted target name:{}".format(
#iris_dataset['target_names'][prediction]))
###评估模型###
#estimate
#y_pred = knn.predict(X_test)
#print("Test set predictions:\n{}".format(y_pred))
#print("Test set score:{:.2f}".format(np.mean(y_pred == y_test)))
print("Test set score:{:.2f}".format(knn.score(X_test,y_test)))