1.初识机器学习

机器学习入门

1.必要的库和工具

①NumPy:可实现多维数组、高级数学函数(线性代数、傅里叶变换)的实现。

import numpy as np
x = np.array([[1,2,3],[4,5,6]])
print("打印矩阵:")
print(x)
打印矩阵:
[[1 2 3]
 [4 5 6]]

②SciPy:用于稀疏矩阵(即矩阵中除少量元素外,其余大部分元素都是0).

from scipy import sparse
eye = np.eye(4)
print("创建一个4行4列单位矩阵:\n{}".format(eye))
创建一个4行4列单位矩阵:
[[1. 0. 0. 0.]
 [0. 1. 0. 0.]
 [0. 0. 1. 0.]
 [0. 0. 0. 1.]]
sparse_matrix = sparse.csr_matrix(eye)
print("该表示方法意为在几行几列有何元素:\n{}".format(sparse_matrix))
该表示方法意为在几行几列有何元素:
  (0, 0)	1.0
  (1, 1)	1.0
  (2, 2)	1.0
  (3, 3)	1.0
data = np.ones(4)
row_indices = np.arange(4)
col_indices = np.arange(4)
eye_coo = sparse.coo_matrix((data,(row_indices,col_indices)))
print("同上:\n{}".format(eye_coo))
同上:
  (0, 0)	1.0
  (1, 1)	1.0
  (2, 2)	1.0
  (3, 3)	1.0

③matpoltlib:科学绘图库.

 在 jupyter 中使用 %matplotlib inline 或者 %matplotlib notebook 可将图像直接显示在浏览器中。
%matplotlib inline
import matplotlib.pyplot as plt
x = np.linspace(-10, 10, 100)
y = np.sin(x)
plt.plot(x, y)
[<matplotlib.lines.Line2D at 0x1def5744070>]

在这里插入图片描述

④pandas:可用于输出数据表格.

import pandas as pd
from IPython.display import display
data = {'Name':["John", "Arthur","Hosea","Charles"],
        'Location':["Mexico","England","America","Canada"],
        'Age':[30, 35, 60, 32]}
data_pandas = pd.DataFrame(data)
display(data_pandas)
NameLocationAge
0JohnMexico30
1ArthurEngland35
2HoseaAmerica60
3CharlesCanada32
display(data_pandas[data_pandas.Age > 34])
NameLocationAge
1ArthurEngland35
2HoseaAmerica60

2.第一个机器学习例子

from sklearn.datasets import load_iris
# 读取鸢尾花数据
iris_dataset = load_iris()
print("鸢尾花数据集的键:\n{}".format(iris_dataset.keys()))
鸢尾花数据集的键:
dict_keys(['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names', 'filename'])

要明确数据集的键值对,目标名:

data – 数据集本身

target – 标签编号

target_names – 标签名称

feature_names – 特征名称

print("预测目标分类名:{}".format(iris_dataset['target_names']))
预测目标分类名:['setosa' 'versicolor' 'virginica']
print("特征名:{}".format(iris_dataset['feature_names']))
特征名:['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
print("数据类型:{}".format(type(iris_dataset['data'])))
数据类型:<class 'numpy.ndarray'>
print("样本数, 特征数:{}".format(iris_dataset['data'].shape))
样本数, 特征数:(150, 4)
print("前五行的数据:\n{}".format(iris_dataset['data'][:5]))
前五行的数据:
[[5.1 3.5 1.4 0.2]
 [4.9 3.  1.4 0.2]
 [4.7 3.2 1.3 0.2]
 [4.6 3.1 1.5 0.2]
 [5.  3.6 1.4 0.2]]
print("目标值规模:{}".format(iris_dataset['target'].shape))
目标值规模:(150,)
print("目标:\n{}".format(iris_dataset['target']))
print("0-品种A,1-品种B,2-品种C")
目标:
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2
 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 2 2]
0-品种A,1-品种B,2-品种C
# 划分训练数据与测试数据
from sklearn.model_selection import train_test_split
"""在sklearn中X表示数据, y表示标签"""
X_train, X_test, y_train, y_test = train_test_split(iris_dataset['data'], iris_dataset['target'], random_state=0)

在原始数据中所有的数据都是按标签排列的(即假设不经过打乱直接选取测试集,如果选取最后的25%作为测试集,可能获得的标签都是相同的).

函数 train_test_split()能够利用伪随机数生成器将数据集打乱顺序。

参数 random_state是为了确保多次运行同意函数后仍能够得到同样的输出(即保持第一次打乱后的数据顺序)

该函数输出X_train(75%), X_test(25%), y_train, y_test.

print("X_train shape:{}".format(X_train.shape))
print("y_train shape:{}".format(y_train.shape))
X_train shape:(112, 4)
y_train shape:(112,)
print("X_test shape:{}".format(X_test.shape))
print("y_test shape:{}".format(y_test.shape))
X_test shape:(38, 4)
y_test shape:(38,)
# 利用X_train中的数据创建DataFrame
# 利用iris_dataset.feature中的字符串对数据列标记
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,cmap=mglearn.cm3)

在这里插入图片描述

K近邻算法

图自bilbil KonwingAI知智
图自bilbil KonwingAI知智

“物以类聚”,如果要对一个新的数据点进行预测,那么KNN算法会寻找离该新数据点最近的数据点来判断其分类结果。

其中, k表示离需要预测的数据点最近的k个邻居。

from sklearn.neighbors import KNeighborsClassifier
# 暂时只考虑只有一个邻居的情况
knn = KNeighborsClassifier(n_neighbors=1)
knn.fit(X_train, y_train)
KNeighborsClassifier(n_neighbors=1)

做出预测

# 输入已知数据,填入模型进行预测
import numpy as np
X_new = np.array([[5, 2.9, 1, 0.2]])
print("显示该数据规模:\n{}".format(X_new.shape))
显示该数据规模:
(1, 4)
prediction = knn.predict(X_new)
print("预测结果:{}".format(prediction))
print("属于标签:{}".format(iris_dataset['target_names'][prediction]))
预测结果:[0]
属于标签:['setosa']

评估模型

# 直接使用之前生成的测试集数据进行预测得到结果
y_pred = knn.predict(X_test)
print(y_pred)
[2 1 0 2 0 2 0 1 1 1 2 1 1 1 1 0 1 1 0 0 2 1 0 0 2 0 0 1 1 0 2 1 0 2 2 1 0
 2]
# 计算精度方法1 - knn.score
print(knn.score(X_test, y_test))
0.9736842105263158
# 计算精度方法2 - np,mean()
print(np.mean(y_pred == y_test))
0.9736842105263158

总结

在这里插入图片描述

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spark是一种大数据处理的框架,它可以处理大量的数据并进行分析。初学者可以通过学习Spark的基本概念和使用方法,了解Spark的工作原理和应用场景。在学习Spark的过程中,需要掌握Spark的核心组件和API,例如Spark Core、Spark SQL、Spark Streaming等。此外,还需要学习Spark的部署和调优,以及与其他大数据技术的集成。 ### 回答2: Spark是一种基于内存的分布式计算框架,是大数据处理中最流行的技术之一。Spark简单易用,能够快速地处理海量数据,尤其是在机器学习和数据挖掘领域中表现突出。本文将从初识Spark的角度入手,介绍Spark的基本概念和使用。 一、Spark的基本概念 1. RDD RDD全称为Resilient Distributed Datasets,中文意思是弹性分布式数据集,它是Spark的核心数据结构。RDD是一个不可变的分布式的对象集合,可以跨越多个节点进行并行处理。一个RDD可以分为多个分区,每个分区可以在不同的节点上存储。 2. DAG DAG即Directed Acyclic Graph(有向无环图),它是Spark中的一个概念,用来表示作业的依赖关系。Spark将一个作业拆分成一系列具有依赖关系的任务,每个任务之间的依赖形成了DAG。 3. 窄依赖和宽依赖 对于一个RDD,如果一个子RDD的每个分区只依赖于父RDD的一个分区,这种依赖就称为窄依赖。如果一个子RDD的每个分区依赖于父RDD的多个分区,这种依赖就称为宽依赖。宽依赖会影响Spark的性能,应尽量避免。 二、Spark的使用 1. 安装Spark 要使用Spark,首先需要在本地或者集群上安装Spark。下载安装包解压缩即可,然后设置环境变量,即可在命令行中运行Spark。 2. Spark Shell Spark Shell是Spark的交互式命令行界面,类似于Python的交互式控制台,可以快速测试Spark代码。在命令行中输入spark-shell即可进入。 3. Spark应用程序 除了Spark Shell,Spark还支持以应用程序的形式运行。要创建一个Spark应用程序,可以使用Scala、Java、Python等语言进行编写。使用Spark API,读取数据、处理数据、保存数据等操作都可以通过编写代码完成。 总之,Spark是一种优秀的分布式计算框架,能够在海量数据处理中发挥出强大的作用。初学者可以从掌握RDD、DAG、依赖关系等基本概念开始,逐步深入学习Spark的使用。 ### 回答3: Spark是一种快速、分布式数据处理框架,它能够在成千上万个计算节点之间分配数据和计算任务。Spark的优势在于它支持多种语言和数据源,可以在内存中快速存储和处理数据。 在初学Spark时,我们需要对Spark的架构和核心组件有一些了解。首先,Spark的核心组件是Spark Core,它是一个可以用于建立各种应用程序的计算引擎。与此同时,Spark持有丰富的库,包括Spark SQL、Spark Streaming、MLLib和GraphX等,以支持在各种数据类型(文本、图像、视频、地理定位数据等)上运行各种算法。 若想要在Spark中进行任务,有两种编程API可供选择:Spark的核心API和Spark的SQL及DataFrame API。Spark的核心API基于RDDs(弹性分布式数据集),它是不可变的分布式对象集合,Spark使用RDD来处理、缓存和共享数据。此外,Spark的SQL及DataFrame API提供了更高层次的语言,可以处理结构化和半结构化数据。 除了组件和API之外,我们还需要了解Spark的4个运行模式:本地模式、Standalone模式、YARN模式和Mesos模式。本地模式由单个JVM上单个线程(本地模式)或四个线程(local[*]模式)运行。Standalone通常用于小规模集群或开发和测试环境。在YARN或Mesos模式下,Spark将任务提交给集群管理器,并通过管理器分配和管理资源。 总体来说,初学Spark时,我们需要了解Spark的核心组件、编程API和运行模式。熟悉这些概念以及Spark的架构,可以帮助我们更好地理解Spark和构建高效且可扩展的Spark应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值