# Raspberry Pi和Python OpenCV人工神经网络和卷积神经网络演示及其机器学习微型框架

{% tabs %}
{% tab title="关键词" %}
Raspberry Pi | Keras | Python | OpenCV | 人工神经网络 | 巻积神经网络 | k-最近邻 KNN | 决策树 | 分类器 | 主成分分析 PCA | 线性判别分析 LDA | 支持向量机 | 装袋 | 随机森林 | Matplotlib | NumPy | Pandas | seaborn | scikit-learn
{% endtab %}

{% tab title="梗概" %}
首先，主要讨论和演示机器学习中使用的基本数据模型及其演示，其次开始的深度学习讨论，然后，探讨 ANN 和 CNN 如何预测结果，例如，当呈现未知图像时，CNN 将尝试将其识别为属于它已被训练识别的类别之一。

### Raspberry Pi机器学习

#### 机器学习数据模型

#### 安装OpenCV

#### k-最近邻（k-NN）模型

#### 决策树分类器

#### 主成分分析(PCA)

```python

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
from sklearn import decomposition
from sklearn.preprocessing import scale
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
df = pd.read_csv('iris.csv', header=None, sep=',')
df.columns=['sepal_length', 'sepal_width', 'petal_length',
'petal_width', 'class']
df.dropna(how="all", inplace=True) # Drops empty line at EOF
# Show the first 5 records
print(df.head())
f, ax = plt.subplots(1, 4, figsize=(10,5))
vis1 = sns.distplot(df['sepal_length'],bins=10, ax= ax[0])
vis2 = sns.distplot(df['sepal_width'],bins=10, ax=ax[1])
vis3 = sns.distplot(df['petal_length'],bins=10, ax= ax[2])
vis4 = sns.distplot(df['petal_width'],bins=10, ax=ax[3])
plt.show()
# split data table into data X and class labels y
X = df.ix[:,0:4].values
y = df.ix[:,4].values
# Standardize the data
X_std = StandardScaler().fit_transform(X)
# Compute the covariance matrix
mean_vec = np.mean(X_std, axis=0)
cov_mat = (X_std -mean_vec).T.dot(X_std - mean_vec) /
(X_std.shape[0] - 1)
print('Covariance matrix \\n%s' %cov_mat)
# Compute the Eigenvectors and Eigenvalues
cov_mat = np.cov(X_std.T)
eig_vals, eig_vecs = np.linalg.eig(cov_mat)
print('Eigenvectors \\n%s' %eig_vecs)
print('Eigenvalues \\n%s' %eig_vals)
eig_pairs = [(np.abs(eig_vals[i]), eig_vecs[:,i]) for i in
range(len(eig_vals))]
eig_pairs.sort()
eig_pairs.reverse()
ax.set_xlabel('Principal Component 1', fontsize=15)
ax.set_ylabel('Principal Component 2', fontsize=15)
ax.set_title('2 Component PCA', fontsize=20)
targets = ['setosa', 'versicolor', 'virginica']
colors = ['r', 'g', 'b']
for target, color in zip(targets, colors):
 indicesToKeep = finalDf['class'] == target
 ax.scatter(finalDf.loc[indicesToKeep, 'principal component
1'], finalDf.loc[indicesToKeep, 'principal component 2'],
c=color, s=50)
ax.legend(targets)
ax.grid
plt.show()
```

#### 线性判别分析(LDA)

#### 支持向量机

#### 学习向量量化

#### 装袋和随机森林

### 人工神经网络及其演示

#### 识别手写数字

#### 使用Keras识别手写字

### 卷积神经网络及其演示

#### MNIST数据集演示

### 使用Raspberry Pi的微型机器学习框架

{% endtab %}
{% endtabs %}

{% content-ref url="../zhi-dian-mi-jin-brief" %}
[zhi-dian-mi-jin-brief](https://via-dean.gitbook.io/all/interdisciplinary-perspective-xue-ji-de-shi-dian/ya-tu-kua-ji/gui-dang/zhi-dian-mi-jin-brief)
{% endcontent-ref %}
