机器学习 感知机 例题 pycharm
时间: 2023-09-22 20:06:06 浏览: 125
以下是一个使用感知机算法解决二分类问题的例子。我们使用Python和PyCharm编写代码。
假设有两个特征x1和x2,我们的目标是根据这两个特征将数据分成两个类别(0或1)。
首先,我们需要导入相关的库:
```
import numpy as np
import matplotlib.pyplot as plt
```
接下来,我们定义感知机类:
```
class Perceptron(object):
def __init__(self, learning_rate=0.01, n_iterations=1000):
self.learning_rate = learning_rate
self.n_iterations = n_iterations
def fit(self, X, y):
n_samples, n_features = X.shape
# 初始化权重和偏置
self.weights = np.zeros(n_features)
self.bias = 0
# 训练感知机
for _ in range(self.n_iterations):
for idx, x_i in enumerate(X):
linear_output = np.dot(x_i, self.weights) + self.bias
y_predicted = self.activation(linear_output)
update = self.learning_rate * (y[idx] - y_predicted)
self.weights += update * x_i
self.bias += update
def predict(self, X):
linear_output = np.dot(X, self.weights) + self.bias
y_predicted = self.activation(linear_output)
return y_predicted
def activation(self, x):
return np.where(x >= 0, 1, 0)
```
在这个类中,我们定义了两个方法:`fit`和`predict`。`fit`方法用于训练感知机,`predict`方法用于预测新的数据点。
在`fit`方法中,我们首先初始化权重和偏置为0。然后,我们使用循环训练感知机。对于每个样本,我们计算线性输出,然后使用激活函数计算预测值。接下来,我们计算误差并更新权重和偏置。
在`predict`方法中,我们计算线性输出,并使用激活函数计算预测值。
最后,我们使用以下代码创建数据并训练感知机:
```
X = np.array([[2, 3], [1, 2], [5, 6], [9, 7], [8, 9], [7, 6]])
y = np.array([0, 0, 0, 1, 1, 1])
model = Perceptron()
model.fit(X, y)
new_data = np.array([[3, 4], [5, 5], [1, 1]])
print(model.predict(new_data))
```
这个例子中,我们创建了一个包含6个数据点的数据集。前三个数据点属于类别0,后三个数据点属于类别1。我们使用这个数据集训练感知机,并使用新的数据点进行预测。
在PyCharm中运行代码,我们可以看到输出结果:
```
[0 1 0]
```
这个结果表明,第一个和第三个数据点属于类别0,第二个数据点属于类别1。
阅读全文