Python- обучения машины небольшие проекты

Оригинальный адрес: https://segmentfault.com/a/1190000017067753?utm_source=tag-newest

Лучший способ узнать это машина технологий обучения, чтобы выполнить некоторые из их собственного дизайна и небольших проектов.

Python является очень популярным и мощным интерпретируемым языком программирования. В отличии от языка R, Python является очень полным языком и платформы, вы либо можете быть использованы для проведения исследований и разработок, он также может быть использован для разработки системных продуктов.

И, модули Python и библиотеки есть много для нас, чтобы выбрать, так что для задачи может иметь целый ряд решений. Как насчет того, до сих пор звучит очень мощно, не так ли?

Если вы используете машину обучения Python, лучший способ это первый закончить небольшой проект в самом начале, почему вы говорите?

Потому что это заставляет вас знать , как установить и запустить интерпретатор Python (который является требование минимальной его).
Потому что это делает вас шаг за шагом , как завершить проект в целом знает.
Как это повысит вашу уверенность, что может заставить вас начать создавать свои собственные небольшие проекты.

Она нуждается в полном новичок небольших проектов практикуются рука

Книги и учебные материалы этих вещей очень раздражает, хотя объяснить вам очень хорошо, много говорить, но слишком фрагментирован, вы будете полагаться на них трудно понять, как комплексное использование этих знаний вместе.

Когда обучающаяся машина применяется к наборам данных, сами по себе, даже если это начало проекта.

Проект машинного обучения не может быть линейным, но много шагов знакомы:

Определите проблему.
Готовые данные.
Алгоритм оценки.
Результаты оптимизации.
Представить результаты.

Новая платформа действительно освоить новый инструмент лучший способ заключается в использовании его шаг через полные проекты машинного обучения, и включает в себя все важным шагом является импорт данных из сводных данных, алгоритм оценки сделать прогноз.

Такая технологическая операция вниз, вы, вероятно, будете в состоянии понять, какие из подпрограмм.

Machine Learning Hello World

Используется для практики первых начал руки одного из лучших небольших проектов классифицирован ирис (канальном набор), этот проект очень подходит для начинающих, потому что это очень легко понять.

Поскольку значения свойства, так что вы должны знать, так и импорт данных процесса.

Проект является классификация, которая позволяет на практике действует сравнительно простой контролируемую алгоритм обучения.

Это также проблема классификации мульти-класс, он может потребовать специального лечения.

Она имеет только четыре свойство и 150 например, означает, что набор данных мал, он не занимает слишком много памяти.

Все атрибуты имеют одинаковое значение и размер блока, до использования без специального масштабирования и перевода.

Здесь мы начинаем, чтобы научиться выполнять машину обучения Hello World с Python.

Для машинного обучения в Python: Преподавал Cheng

В этом разделе мы завершим полную машину обучения небольших проектов, следующие основные этапы:

установленный Python и платформу SciPy.
Импорт данные установлены.
наборы данных Резюме.
Визуализация наборов данных.
Алгоритм оценки.
Делать прогнозы.

Попробуйте постучать собственную командную строку для того, чтобы ускорить, вы можете также скопировать и вставить свой код.

1. Скачайте, установите и запустите Python SciPy

Если у вас не установлен на вашем компьютере, установить Python и SciPy платформу.

Эта часть не вдаваться в детали, потому что есть много онлайн учебники.

1.1 Установка библиотеки SciPy

Как используется здесь, версии Python 2.7 или 3.5.

scipy
numpy
matplotlib
pandas
Sklearn

Есть много способов установки программ, перечисленных выше библиотек, рекомендуется выбрать метод выбора, а затем установить эти библиотеки с использованием этого метода.

установка SciPy страница содержит подробные методы для установки различных программ в системе выше библиотеках:

В Mac OS, вы можете установить эти библиотеки и python2.7 с MacPorts, для получения дополнительной информации нажмите здесь
на Linux, вы можете использовать менеджер пакетов, просто установите RPM , как на Fedora.
Если вы система Windows , рекомендуется установить бесплатную версию Anaconda.

Примечание: В основе этих вышеуказанных методов на вашем компьютере уже установлена ​​версия 0.18 или выше scikit учиться.

1.2 запустить Python, проверьте версию программы

Этот шаг важен, убедитесь, что ваша среда Python успешно установлена, вы можете работать должным образом.

Следующий сценарий может помочь вам проверить вашу среду Python, он будет импортировать каждую библиотеку, необходимую для этого урока, и экспортировать соответствующую версию.

Откройте командную строку, запустите интерпретатор Python:

питон

Я предлагаю вам работать непосредственно на переводчике, или после того, как письменные прогоны сценария в командной строке, не запускать скрипт на большой редактор и IDE. В центре внимания нашей озабоченности машинное обучение, а не программные средства.

Введите или скопируйте и вставьте следующий скрипт:

# Check the versions of libraries
 
# Python version
import sys
print('Python: {}'.format(sys.version)) # scipy import scipy print('scipy: {}'.format(scipy.__version__)) # numpy import numpy print('numpy: {}'.format(numpy.__version__)) # matplotlib import matplotlib print('matplotlib: {}'.format(matplotlib.__version__)) # pandas import pandas print('pandas: {}'.format(pandas.__version__)) # scikit-learn import sklearn print('sklearn: {}'.format(sklearn.__version__)) 

Если рабочая станция работает на OS X, вы получите следующий результат:

Python: 2.7.11 (default, Mar 1 2016, 18:40:10) [GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] scipy: 0.17.0 numpy: 1.10.4 matplotlib: 1.5.1 pandas: 0.17.1 sklearn: 0.18.1 

И вы можете контролировать то, что ваш выход.

В идеале, два должны быть такими же, как или очень близко к большинству. API обычно не изменится быстро, так что если вы отпустите немного низко, не волнуйтесь, это руководство по-прежнему применять обучение за вами.

Если вы здесь произошла ошибка, первая пауза, исправить ошибку.

Если запустить данный скрипт не может сгладить, то вы не сможете полностью завершена в конце этого урока.

Предложения по ошибке Вы нашли то, что появляется в Интернете, или попросить опытных людей, таких, как часть Чи сообщества.

2. Импорт данных

Мы должны использовать что ирис набор данных, этот набор данных очень известен, учебные наборы данных почти начального обучения машины были первым использовать это, можно сказать, что машина обучения набора данных Hello Word.

Он содержит 150 ирис наблюдения, измерения в сантиметрах цветов на четыре. Колонка 5 типа цветов для наблюдения. Все три вида относятся наблюдать цветы.

На этом этапе мы будем импортировать радужную оболочку данные из CSV файла URL.

2.1 Библиотека Импорт

Во-первых, мы импортируем все модули, функции и объекты, используемые в данном руководстве.

# Load libraries
import pandas
from pandas.plotting import scatter_matrix
import matplotlib.pyplot as plt from sklearn import model_selection from sklearn.metrics import classification_report from sklearn.metrics import confusion_matrix from sklearn.metrics import accuracy_score from sklearn.linear_model import LogisticRegression from sklearn.tree import DecisionTreeClassifier from sklearn.neighbors import KNeighborsClassifier from sklearn.discriminant_analysis import LinearDiscriminantAnalysis from sklearn.naive_bayes import GaussianNB from sklearn.svm import SVC 

Вся информация должна быть точной при импорте. Если возникает ошибка, немедленно прекратить. Прежде чем продолжить, вы должны обеспечить правильную среду SciPy.

Импорт данных установлено 2.2

Мы можем импортировать данные из UCI Machine Learning хранилищу напрямую, используя инструменты для панд. Ниже мы будем затем использовать его для статистической и визуализации работы.

Обратите внимание, что, когда мы импортируем данные будут указывать имя каждого столбца, который помогает нам справиться с более поздними данными.

# Load dataset
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"
names = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class'] dataset = pandas.read_csv(url, names=names) 

Это не должно быть никаких ошибок, внесенных в набор данных.

Если вы проблема сети, iris.data файл может быть загружен в рабочий каталог, а затем изменен на локальный URL имени файла, импортировать его таким же образом.

Набор данных 3. Резюме

Теперь мы можем взглянуть на данные.

На этом этапе мы анализируем данные о ряде способов:

Габаритные размеры наборов данных.
Детальный просмотр самих данных.
Все статистическая сводка атрибутов.
По статусу классификации данных категориальных переменных.

Не волнуйтесь, каждый метод только один из командной строки. Командная строка не является одноразовым, можно повторно использовать в будущих проектах, не были потрачены впустую.

3.1 Размеры наборов данных

Мы можем быстро понять данные атрибута формы включают в себя количество строк (например) и сколько столбцов (атрибуты).

# shape
print(dataset.shape)

Вы должны увидеть 150 строк и 5:

(150, 5)

3.2 Подробные данные просмотреть

Серьезно смотреть на ваши данные всегда хорошо.

# head
print(dataset.head(20))
你应该会看到数据的前20行:
  sepal-length sepal-width petal-length petal-width       class
0           5.1         3.5 1.4 0.2 Iris-setosa 1 4.9 3.0 1.4 0.2 Iris-setosa 2 4.7 3.2 1.3 0.2 Iris-setosa 3 4.6 3.1 1.5 0.2 Iris-setosa 4 5.0 3.6 1.4 0.2 Iris-setosa 5 5.4 3.9 1.7 0.4 Iris-setosa 6 4.6 3.4 1.4 0.3 Iris-setosa 7 5.0 3.4 1.5 0.2 Iris-setosa 8 4.4 2.9 1.4 0.2 Iris-setosa 9 4.9 3.1 1.5 0.1 Iris-setosa 10 5.4 3.7 1.5 0.2 Iris-setosa 11 4.8 3.4 1.6 0.2 Iris-setosa 12 4.8 3.0 1.4 0.1 Iris-setosa 13 4.3 3.0 1.1 0.1 Iris-setosa 14 5.8 4.0 1.2 0.2 Iris-setosa 15 5.7 4.4 1.5 0.4 Iris-setosa 16 5.4 3.9 1.3 0.4 Iris-setosa 17 5.1 3.5 1.4 0.3 Iris-setosa 18 5.7 3.8 1.7 0.3 Iris-setosa 19 5.1 3.8 1.5 0.3 Iris-setosa

3.3 Статистический обзор

Теперь мы можем искать статистическое резюме каждого свойства, в том числе количества, средний, максимума, минимума, и некоторые процентили значений.

# descriptions
print(dataset.describe())

Мы можем видеть все цифровые значения имеют один и тот же блок (см), а также в размерах между 0-8 см.

sepal-length sepal-width petal-length petal-width
count   150.000000  150.000000   150.000000  150.000000
mean      5.843333 3.054000 3.758667 1.198667 std 0.828066 0.433594 1.764420 0.763161 min 4.300000 2.000000 1.000000 0.100000 25% 5.100000 2.800000 1.600000 0.300000 50% 5.800000 3.000000 4.350000 1.300000 75% 6.400000 3.300000 5.100000 1.800000 max 7.900000 4.400000 6.900000 2.500000

Распределение 3,4 класса

Мы теперь посмотрим на количество строк, относящихся к каждой категории, ее можно рассматривать как абсолютное число.

class
Iris-setosa       50
Iris-versicolor   50
Iris-virginica    50

4. Визуализация данных

Теперь у нас есть база данных понимания, теперь мы должны использовать некоторые визуальные формы, а затем расширяется в понимании данных.

Обратите внимание на два основных визуальных фиг:

Одномерный график, для того , чтобы лучше понять каждое свойство.
Многомерный график, для того , чтобы лучше понять взаимосвязь между различными свойствами.

4,1 Single-Variable Graph

Давайте начнем с некоторыми одиночными переменной графикой, которая является графическим каждой отдельной переменной.

Принимая во внимание входные переменные являются цифровыми, мы можем создать входные переменные для каждого ящика участков.

# box and whisker plots
dataset.plot(kind='box', subplots=True, layout=(2,2), sharex=False, sharey=False) plt.show() 

Это позволяет более четко видеть распределение входных атрибутов:

Мы также можем создать гистограмму, чтобы понять их распределение для каждой входной переменной.

# histograms
dataset.hist()
plt.show()

Два входных переменных, кажется распределение Гаусса, это несколько полезно, потому что мы можем использовать алгоритм за полную пользу этого предположения.

Более 4,2 Переменная Графика

Теперь мы можем посмотреть на взаимодействие между переменными.

Во-первых, мы смотрим на все атрибуты диаграммы разброса, который помогает нам увидеть структуру отношений между входными переменными.

# scatter plot matrix
scatter_matrix(dataset)
plt.show()

Обратите внимание, что некоторые свойства диагонального профиля, который показывает корреляцию и весьма предсказуемые отношения между ними.

5. Алгоритм оценки

Сейчас мы строим некоторые модели данных, а также проверить точность своих данных не видно.

Основные шаги в этом разделе:

将数据集分离出一个验证集。
设定测试工具,使用10折交叉验证。
搭建6个不同的模型根据花朵测量值预测出鸢尾花种类。
选出最佳模型。

5.1 创建验证集

我们需要知道搭建的模型效果怎样。后面我们会用统计方法来验证模型对新数据的准确度。我们还希望通过评估模型在真正不可见数据时的表现,来进一步确定模型的准确度。

也就是我们会留一些数据不让算法看到,然后用这些数据来确定模型到底有多准确。

我们会将导入的数据集拆分为两部分,80% 用于训练模型,20% 用于验证模型。

# Split-out validation dataset
array = dataset.values
X = array[:,0:4]
Y = array[:,4]
validation_size = 0.20
seed = 7
X_train, X_validation, Y_train, Y_validation = model_selection.train_test_split(X, Y, test_size=validation_size, random_state=seed)

得到的 X_train 和 Y_train 里的训练数据用于准备模型,得到的 X_validation 和 Y_validation 集我们后面会用到。

5.2 测试工具

我们会用十折交叉验证法测试模型的准确度。

这会将我们的数据集分成 10 部分,轮流将其中 9 份作为训练数据,1份作为测试数据,进行试验。

# Test options and evaluation metric
seed = 7
scoring = 'accuracy'

现在我们用“准确率”这个维度去评估模型,也就是能正确预测出鸢尾花类别的比例。我们后面运行和评估模型时会使用分数变量。

5.3 搭建模型

针对这个问题,我们并不知道哪个算法最好,应当用哪些配置。我们从可视化图表中能够得知在有些维度上一些类别的部分是线性可分的,因此我们预期总体效果会不错。

我们看看这 6 种算法:

逻辑回归(LR)
线性判别分析(LDA)
K最近邻算法(KNN)
分类和回归树(CART)
高斯朴素贝叶斯(NB)
支持向量机(SVM)

这里面既有简单的线性算法(LA和LDA),也有非线性算法(KNN,CART,NB和SVM)。我们每次运行算法前都要重新设置随机数量的种子,以确保是在用相同的数据拆分来评估每个算法。这样能保证最终结果可以直接进行比较。

我们来搭建和评估模型:

 Spot Check Algorithms
models = []
models.append(('LR', LogisticRegression()))
models.append(('LDA', LinearDiscriminantAnalysis()))
models.append(('KNN', KNeighborsClassifier())) models.append(('CART', DecisionTreeClassifier())) models.append(('NB', GaussianNB())) models.append(('SVM', SVC())) # evaluate each model in turn results = [] names = [] for name, model in models: kfold = model_selection.KFold(n_splits=10, random_state=seed) cv_results = model_selection.cross_val_score(model, X_train, Y_train, cv=kfold, scoring=scoring) results.append(cv_results) names.append(name) msg = "%s: %f (%f)" % (name, cv_results.mean(), cv_results.std()) print(msg) 

5.4 选择最佳模型

我们现在获得了 6 个模型以及每种模型的准确度评估状况。接下来需要将模型相互比较,选出最准确的那个。

运行上面的例子,会得到如下初步结果:

LR: 0.966667 (0.040825)
LDA: 0.975000 (0.038188) KNN: 0.983333 (0.033333) CART: 0.975000 (0.038188) NB: 0.975000 (0.053359) SVM: 0.981667 (0.025000)

我们可以看到似乎 KNN 的估计准确率分值最高。

我们也可以将模型评估结果用图形表示出来,比较每个模型的跨度和平均准确度。这种衡量模型准确率的方法比较流行,因为每种算法都被评估了 10 次(十折交叉验证法)。

# Compare Algorithms
fig = plt.figure()
fig.suptitle('Algorithm Comparison')
ax = fig.add_subplot(111)
plt.boxplot(results)
ax.set_xticklabels(names)
plt.show()

你可以看到箱线图的顶部范围 呈压缩状,不少模型都达到了 100% 的准确率。

6.做出预测

经过验证,KNN 算法的准确率最高。现在我们看看该模型在验证集上的准确度。

我们最后来验证一下最好的模型的准确率有多高。拆分并保留一个验证集很值得,以防你在训练期间出现错误,比如对训练集过拟合或者数据泄露之类,这两种错误都会造成最终结果过于乐观。

我们可以直接在验证集上运行 KNN 算法,将结果总结为一个最终准确率分值,一个混淆矩阵和一个分类报告。

# Make predictions on validation dataset
knn = KNeighborsClassifier()
knn.fit(X_train, Y_train)
predictions = knn.predict(X_validation)
print(accuracy_score(Y_validation, predictions))
print(confusion_matrix(Y_validation, predictions)) print(classification_report(Y_validation, predictions)) 

我们可以看到模型的准确率为 0.9,即 90%。混淆矩阵显示了所犯的三个错误。最终,分类报告显示了每个类别的精确率、召回率、F1 值等。

[[ 7 0 0]
 [ 0 11 1] [ 0 2 9]] precision recall f1-score support Iris-setosa 1.00 1.00 1.00 7 Iris-versicolor 0.85 0.92 0.88 12 Iris-virginica 0.90 0.82 0.86 11 avg / total 0.90 0.90 0.90 30 

人人可用 Python 做机器学习任务

把上面的这篇教程过一遍,最多花你5-10分钟!

你不需要什么都懂。 你的目标就是完整的跟着操作一遍这个教程,然后得到结果。刚开始你不必什么都懂。可以一边做一边列出问题,多用用 help(FunctionName) 帮你理解 Python 中的语法,学习你正在用的函数。

你不需要明白算法的原理 。当然,知道机器学习算法的局限性和配置方式很重要,但对算法原理的学习可以放在后头。你应该循序渐进的了解算法的原理,在当前阶段主要任务就是熟悉平台。

你也不必是个Python程序员。 如果你是个 Python 初学者,Python 的语法会很陌生。和其它语言一样,重点关注函数调用和赋值,后面再详细深挖语法知识。

你也不用是个机器学习专家。 你可以在后面学习每种算法的好处和局限性,而且这方面有很多资料,比如关于机器学习项目的操作步骤,以及用验证集评估模型的重要性等。

机器学习项目的其它步骤。 本文并没有涉及机器学习项目的全部步骤,因为这毕竟是我们的第一个项目,关注重要步骤就行了,也就是:导入数据、查看数据、评估算法、做出预测.

рекомендация

отwww.cnblogs.com/boonya/p/12153987.html