Python- 기계 학습 작은 프로젝트

원본 주소 : https://segmentfault.com/a/1190000017067753?utm_source=tag-newest

배울 수있는 가장 좋은 방법은 자신의 디자인과 작은 프로젝트의 일부를 완료하기 위해 기계 학습 기술이다.

파이썬은 매우 인기있는 강력한 해석 프로그래밍 언어입니다. 은 R 언어와는 달리, 파이썬은 매우 완벽한 언어와 플랫폼, 당신도 연구 개발을 수행하는 데 사용할 수 있습니다, 또한 시스템 제품을 개발하는 데 사용할 수 있습니다.

그리고, 파이썬 모듈과 라이브러리는 이렇게 작업을위한 솔루션의 번호를 가질 수 있습니다, 우리가 선택하는 많은있다. 어때, 여전히 오른쪽 매우 강력한 소리?

파이썬을 배우고 사용하는 기계를 할 경우, 가장 좋은 방법은 처음 시작 부분에 작은 프로젝트를 완료하는 것입니다, 당신은 왜 말하는가?

그것은 수 있기 때문에 당신은 (최소 요건이되는) 설치 및 파이썬 인터프리터를 시작하는 방법을 알고 있습니다.
당신이 단계적으로 수 있기 때문에 방법을 완전히 알고있는 프로젝트를 완료합니다.
이 자신감을 증가 할 것이다, 그것은 당신이 당신의 자신의 작은 프로젝트를 만들기 시작 할 수 있습니다.

그것은 완전 초보 작은 프로젝트 실행의 손을 필요로

책과 아주 잘 당신에게 설명을 많이 이야기하지만 너무 세분화되어 있지만, 이러한 것들의 교재가 매우 성가신, 당신은 어떻게이 지식의 통합 사용이 함께 이해하는 이러한 하드에 의존하고 있습니다.

때 기계 학습이 프로젝트의 시작 인 경우에도 자신의 데이터 세트에 적용.

기계 학습 프로젝트는 선형되지 않을 수도 있습니다,하지만 많은 단계는 잘 알고 있습니다 :

문제를 정의합니다.
준비 데이터입니다.
평가 알고리즘.
최적화 결과.
결과를 제시한다.

이 새로운 플랫폼은 정말 가장 좋은 방법은 완전한 기계 학습 프로젝트를 단계별로 사용하는 것입니다, 그리고 예측을하기 위해 요약 데이터, 평가 알고리즘에서 데이터 가져 오기에 중요한 단계 모두를 포함하는 새로운 도구를 마스터.

이러한 프로세스 동작 아래로, 당신은 아마 루틴의 어떤 이해 할 수있을 것입니다.

기계 학습, 안녕하세요

먼저 가장 작은 프로젝트의 손 하나에 시작 연습에 사용 된 분류 조리개 (데이터 링크 설정) 매우 쉽게 이해하기 때문에,이 프로젝트는, 초보자를위한 매우 적합하다.

속성 값이기 때문에, 그래서 당신은 가져 오기 및 공정 데이터에 그렇게 알고있다.

이 프로젝트는 비교적 간단한지도 학습 알고리즘을 동작 연습 할 수있는 분류입니다.

그것은 어떤 특별한 치료를 필요로 할 수있다, 또한 다중 클래스 분류 문제입니다.

이 네 개의 속성 150 예컨대, 데이터 세트가 작고, 너무 많은 메모리를 차지하지 않는다는 것을 의미를 갖는다.

모든 속성은 같은 값 및 특수 스케일링 및 번역없이 단위, 사용하기 전에의 크기를 가지고있다.

여기에서 우리는 파이썬 안녕하세요 학습 기계를 수행하는 방법을 배우고 시작합니다.

파이썬에서 기계 학습을 위해 : 가르치는 쳉

이 섹션에서 우리는 작은 프로젝트 학습 전체 기계를 완료, 다음은 주요 단계는 다음과 같습니다

파이썬은 설치 및 SciPy 플랫폼입니다.
데이터 가져 오기 설정합니다.
요약 데이터 세트.
시각화 데이터 세트.
평가 알고리즘.
만들기 예측.

, 속도를 위해, 자신의 명령 줄을 노크하려고 당신은 또한 복사 내 코드를 붙여 넣을 수 있습니다.

1. 다운로드, 설치 및 파이썬 SciPy를 시작합니다

당신이 당신의 컴퓨터에 설치하지 않은 경우, 파이썬과 SciPy 플랫폼을 설치합니다.

많은 온라인 자습서가 있기 때문에이 부분은 자세히 다루지 않습니다.

1.1 설치 SciPy 라이브러리

마찬가지로 파이썬 버전 본원 2.7 또는 3.5을 사용 하였다.

scipy
numpy
matplotlib
pandas
Sklearn

라이브러리 위에 나열된 프로그램을 설치하는 방법에는 여러 가지가 있습니다,이 라이브러리는이 방법을 사용하여 설치 한 다음 선택 방법을 선택하고하는 것이 좋습니다.

SciPy 설치 페이지는 시스템 위의 라이브러리에서 다양한 프로그램을 설치하는 자세한 방법을 제공합니다 :

맥 OS에, 당신은 MacPorts를 이러한 라이브러리와 Python2.7를 설치할 수 있습니다 자세한 내용은 여기를 클릭
리눅스에, 당신은 단지 페도라로 RPM을 설치, 패키지 관리자를 사용할 수 있습니다.
Windows 시스템이 있다면, 아나콘다의 무료 버전을 설치하는 것이 좋습니다.

참고 : 위의 이러한 방법의 기초는 컴퓨터에 이미 설치 0.18 이상 scikit가 배울 버전에 있습니다.

1.2 파이썬을 시작, 프로그램 버전을 확인

이 단계는 중요하다, 확인 파이썬 환경이 성공적으로 설치 확인 제대로 실행할 수 있습니다.

다음 스크립트는이 튜토리얼에 필요한 각 라이브러리를 가져올 것입니다, 당신은 당신의 파이썬 환경을 테스트 할 수 있도록하고 해당 버전을 내보낼 수 있습니다.

명령 줄을 열고 파이썬 인터프리터를 시작합니다 :

파이썬

난 당신이 통역에 직접 작업, 또는 명령 줄에서 작성된 스크립트가 실행 된 이후에, 좋은 편집기와 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. 데이터 가져 오기

우리는 설정이 홍채 데이터를 사용하며,이 데이터 세트는 거의 엔트리 학습 기계 학습 데이터 세트는 첫 번째 사용이 기계가 데이터 세트 안녕하세요 말씀을 배우고 있다고 할 수있다 매우 유명했다한다.

그것은 네 가지로 센티미터 꽃 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 시스템에서 데이터를 가져올 수 있습니다. 아래 우리는 통계 및 시각화 작업을 위해 사용됩니다.

주 우리가 가져올 때 데이터가 우리가 나중에 데이터를 처리하는 데 도움이 각 컬럼의 이름을 나타내는 것입니다.

# 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 cm 사이의 크기 또한, 상기 디지털 값이 모두 동일한 유닛 (cm)가 볼 수있다.

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 단일 변수 그래프

그래픽 각각의 변수 일부 단일 변수 그래픽하자의 시작.

입력 변수는 디지털이다 고려하여, 우리는 각각의 박스 플롯의 입력 변수를 만들 수 있습니다.

# 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