利用随机库make_classification写原生Python编写感知器算法,得到准确率,并画出正例和反例的散点图,画出正例和反例的散点图
时间: 2024-02-21 10:02:24 浏览: 75
感知机算法python实现
好的,让我来回答你的问题。
首先,感知器算法是一种二分类算法,它的目标是找到一条能够将正例和反例分开的超平面。具体的实现过程可以参考如下的代码:
```python
import random
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_classification
class Perceptron:
def __init__(self, lr=0.1, epochs=100):
self.lr = lr
self.epochs = epochs
def fit(self, X, y):
self.w = np.zeros(X.shape[1])
self.b = 0
for _ in range(self.epochs):
for i in range(X.shape[0]):
if y[i] * (np.dot(self.w, X[i]) + self.b) <= 0:
self.w += self.lr * y[i] * X[i]
self.b += self.lr * y[i]
def predict(self, X):
return np.sign(np.dot(X, self.w) + self.b)
X, y = make_classification(n_samples=100, n_features=2, n_informative=2, n_redundant=0, n_clusters_per_class=1)
perceptron = Perceptron()
perceptron.fit(X, y)
accuracy = np.sum(perceptron.predict(X) == y) / len(y)
print(f"Accuracy: {accuracy}")
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.show()
```
这段代码中,我们首先使用了 `make_classification` 函数生成了一个二分类数据集,然后定义了一个 `Perceptron` 类,其中 `fit` 方法就是感知器算法的实现过程,`predict` 方法可以用来对新数据进行预测。最后计算了一下算法的准确率,并画出了正例和反例的散点图。
希望这个回答能够帮到你!
阅读全文