亚图跨际
国际版https://viadean.notion.site

Scikit学习–使用Python进行机器学习

 二维码 73

在此文中,我们将讨论python中的scikit-learn。 在谈论Scikit learn之前,必须先了解机器学习的概念,并且必须知道如何将Python用于数据科学。 借助机器学习,您无需手动收集见解。 您只需要一个算法,机器就会为您完成剩下的工作! 这不令人兴奋吗? Scikit学习是我们可以使用Python实现机器学习的吸引力之一。 它是一个免费的机器学习库,其中包含用于数据分析和挖掘目的的简单有效的工具。

什么是机器学习?

机器学习是一种人工智能,可以让软件应用程序从数据中学习,并在无需人工干预的情况下更准确地预测结果。 但是那是怎么发生的呢? 为此,需要对机器进行一些数据训练,并基于此数据,它将检测模式以创建模型。 从数据中获取知识并提供有力见解的过程全都与机器学习有关。 请参考下图,以更好地了解其工作原理:

系统使用数据来学习算法,然后使用它来构建预测模型。 稍后,我们调整模型或使用反馈数据提高模型的准确性。 使用此反馈数据,我们可以调整模型并预测对新数据集的操作。 我们将讨论一种算法方法的用例,其中我们将训练和测试数据,这将帮助您更好地了解它是否适合您的特定问题。

Scikit Learn概述

Scikit learning是用于在Python中执行机器学习的库。 Scikit Learn是一个开放源代码库,已获得BSD许可,并且可以在各种情况下重用,鼓励学术和商业用途。 它在Python中提供了一系列有监督和无监督的学习算法。 Scikit学习包括流行的算法和库。 除此之外,它还包含以下软件包:

  • NumPy
  • Matplotlib
  • SciPy (Scientific Python)

要实现Scikit learn,我们首先需要导入上述软件包。 您可以使用命令行下载这两个软件包,或者如果您使用的是PyCharm,则可以直接进行安装,方法与其他软件包相同。scikit-learn更多了解

接下来,必须以类似的方式导入Sklearn。 Scikit学习是基于SciPy(科学Python)构建的,必须先安装SciPy(科学Python),然后才能使用Scikit-learn。另外,安装Scipy和wheel软件包(如果不存在),您可以输入以下命令:

pip install scipy

我已经下载并安装了它,如果有任何混淆,可以参考下面的屏幕截图。

导入上述库后,让我们更深入地了解Scikit learn的用法。

Scikit learning提供了示例数据集,例如iris和digits。 您可以导入数据集并使用它们。 之后,您必须导入SVM,它代表支持向量机。 SVM是机器学习的一种形式,用于分析数据。

让我们举个例子,我们将提取数字数据集,它将为我们对数字进行分类,例如-0 1 2 3 4 5 6 7 8 9.请参考以下代码:

import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn import svm

digits= datasets.load_digits()
print(digits.data)

输出

[[ 0. 0. 5. ..., 0. 0. 0.]
[
0. 0. 0. ..., 10. 0. 0.]
[
0. 0. 0. ..., 16. 9. 0.]
...,
[
0. 0. 1. ..., 6. 0. 0.]
[
0. 0. 2. ..., 12. 0. 0.]
[
0. 0. 10. ..., 12. 1. 0.]]

在这里,我们刚刚导入了库,SVM,数据集并打印了数据。 它是一长串数字数据,用于存储数据。 它可以访问可用于对数字样本进行分类的功能。 接下来,您还可以尝试其他一些操作,例如目标,图像等。请考虑以下示例:

import matplotlib.pyplot as plt
from sklearn
import datasets
from sklearn
import svm

digits= datasets.load_digits()
print(digits.target)
print(digits.images[0])

输出

[0 1 2 ..., 8 9 8]                  // target of the data
[[
0. 0. 5. 13. 9. 1. 0. 0.]         // image of the data
[
0. 0. 13. 15. 10. 15. 5. 0.]
[
0. 3. 15. 2. 0. 11. 8. 0.]
[
0. 4. 12. 0. 0. 8. 8. 0.]
[
0. 5. 8. 0. 0. 9. 8. 0.]
[
0. 4. 11. 0. 1. 12. 7. 0.]
[
0. 2. 14. 5. 10. 12. 0. 0.]
[
0. 0. 6. 13. 10. 0. 0. 0.]]

从上面可以看到,目标数字和数字图像被打印。 digits.target给出数字数据集的基本事实,即与每个数字图像相对应的数字。 接下来,数据始终是具有形状(n_samples,n_features)的2D数组,尽管原始数据可能具有不同的形状。 但是对于数字,每个原始样本都是形状为(8,8)的图像,可以使用digits.image进行访问。

学习与预测

接下来,在Scikit学习中,我们使用了数据集(10个可能的类的样本,数字从零到九),并且在给出图像时需要预测数字。 要预测类别,我们需要一个估计器,该估计器有助于预测看不见的样本所属的类别。scikit-learn更多了解在Scikit学习中,我们有一个用于分类的估计器,它是一个实现fit(x,y)和predict(T)的python对象。 让我们考虑以下示例:

import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn import svm

digits= datasets.load_digits()                     
// dataset
clf = svm.SVC(gamma=
0.001, C=100)
print(len(digits.data))
x,y=digits.data[:-
1],digits.target[:-1]            // train the data
clf.fit(x,y)
print('Prediction:', clf.predict(digits.data[-1])) //predict the data
plt.imshow(digits.images[-
1],cmap=plt.cm.gray_r, interpolation="nearest")
plt.show()

输出

1796

Prediction: [8]

在上面的示例中,我们首先找到了长度,并加载了1796个示例。 接下来,我们已将此数据用作学习数据,我们需要在其中测试最后一个元素和第一个否定元素。 另外,我们需要检查机器是否预测了正确的数据。 为此,我们使用了Matplotlib来显示数字图像。 因此,总而言之,您有数字数据,有了目标,就可以预测目标,因此很高兴! 真的很容易,不是吗?

您还可以使用图像形象化目标标签,只需参考以下代码即可:

import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn import svm

digits= datasets.load_digits()
# Join the images and target labels in a list
images_and_labels = list(zip(digits.images, digits.target))

# for every element in the list
for index, (image,
label) in enumerate(images_and_labels[:8]):
   
# initialize a subplot of 2X4 at the i+1-th position
    plt.subplot(
2, 4, index + 1)
   
# Display images in all subplots
    plt.imshow(image, cmap=plt.cm.gray_r,interpolation=
'nearest')
   
# Add a title to each subplot
    plt.title(
'Training: ' + str(label))

# Show the plot
plt.show()

输出

如您在上面的代码中看到的,我们已经使用“ zip”功能将图像和目标标签连接到列表中,然后将其保存到变量中,例如images_and_labels。 之后,我们在每个位置的2 x 4网格中索引了前八个元素。 之后,我们刚刚在Matplotlib的帮助下显示了图像,并将标题添加为“ training”。

用例-使用Logistic回归进行预测

问题陈述–一家汽车公司在市场上发布了新的SUV。他们希望使用以前有关SUV销量的数据来预测可能对此感兴趣的人群。

为此,让我们看一个数据集,其中有UserId,性别,年龄,估计薪水和购买的列。 这只是一个示例数据集。 一旦我们将数据导入pyCharm中,它看起来就会像这样。

现在让我们了解这些数据。 正如您在上面的数据集中看到的那样,我们具有ID,性别,年龄等类别。现在基于这些类别,我们将训练我们的机器并预测购买数量。 因此,在这里,我们有“年龄”,“预期工资”的自变量和“已购买”的因变量。 现在,我们将应用监督学习,即逻辑回归算法,以使用现有数据找出购买数量。

首先,让我们大致了解逻辑回归。scikit-learn更多了解

逻辑回归– 逻辑回归以二进制格式生成结果,该结果用于预测分类因变量的结果。 当因变量为二进制(即可用类别的数量为两个)时,使用最为广泛,例如,逻辑回归的通常输出为–

  • 是和否
  • 真和假
  • 高和低
  • 通过和失败

现在从代码开始,我们将首先导入这些库-Numpy,Matplotlib和Pandas。遵循以下步骤,很容易在Pycharm中导入pandas:

Settings -> Add Package ->   Pandas -> Install

之后,我们将通过以下方式导入数据集并分离因变量(购买的)和自变量(年龄,薪水):

dataset = pd.read_csv('Social_Network_Ads.csv')
X = dataset.iloc[:, [
2, 3]].values
y = dataset.iloc[:,
4].values
print(X)
print(y)

下一步将是训练和测试数据。 一种常见的策略是将所有标记的数据分成训练和测试子集,通常以训练子集的70-80%和测试子集的20-30%的比例进行获取。 因此,我们使用cross_validation创建了训练和测试集。

from sklearn.cross_validation import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size =
0.25, random_state = 0)

我们还可以使用StandarScaler缩放输入值以获得更好的性能,如下所示:

from sklearn.preprocessing import StandardScaler

sc = StandardScaler()

X_train = sc.fit_transform(X_train)

X_test = sc.transform(X_test)

现在,我们将创建我们的逻辑回归模型。scikit-learn更多了解

from sklearn.linear_model import LogisticRegression

classifier = LogisticRegression(random_state =
0)

classifier.fit(X_train, y_train)

我们可以使用它来预测测试集的结果。

y_pred = classifier.predict(X_test)

现在,我们可以检查有多少预测是准确的,有多少没有使用混淆矩阵。让我们将Y定义为正实例,将N定义为负实例。四个结果以2 * 2混淆矩阵表示,如下所示:

from sklearn.metrics import confusion_matrix

cm = confusion_matrix(y_test, y_pred)

print(cm)

输出

[[65 3]
[
8 24]]

接下来,基于我们的混淆矩阵,我们可以计算准确性。因此,在我们上面的示例中,准确性为:

= TP + TN / FN + FP

= 65+24 / 65 +3+ 8 + 24

=89%

我们已经手动完成了!现在让我们看看机器如何为我们计算出相同的值,因为我们有一个内置函数“ accuracy_score”,该函数可以计算精度并进行打印,如下所示:

from sklearn.metrics import accuracy_score    // import the function accuracy_score

print(accuracy_score(y_test, y_pred)*100)     // prints the accuracy

输出

89.0

很棒!我们已经使用Scikit学习成功实现了逻辑回归,准确度为89%。

文章分类: 编程碎语scikit-learn