我有一个商品购买的数据集,这是一个已经经过预处理的数据集,现在它分为Gender(0,1),Age(0,1,2),EstimatedSalary(0,1,2),Purchased('yes','no') 能否为我编写一个感知机分类模型,目的是预测什么样的人群会购买产品,给出代码
时间: 2023-11-22 09:51:54 浏览: 61
当然可以!以下是一个简单的Python代码实现一个感知机分类模型:
```python
import numpy as np
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] + 1)
X = np.c_[X, np.ones(X.shape[0])]
for epoch in range(self.epochs):
for xi, yi in zip(X, y):
update = self.lr * (yi - self.predict(xi))
self.w[1:] += update * xi
self.w[0] += update
def predict(self, X):
if np.dot(X, self.w[1:]) + self.w[0] > 0:
return 1
else:
return 0
```
这个类实现了一个感知机分类器,其中`fit`函数用于训练模型,`predict`函数用于预测新数据的类别。
现在,我们可以使用这个类来训练你的数据集:
```python
import pandas as pd
# 读取数据集
data = pd.read_csv('your_data.csv')
# 准备数据
X = data.drop('Purchased', axis=1).values
y = data['Purchased'].values
y = np.where(y == 'yes', 1, 0)
# 训练模型
model = Perceptron(lr=0.1, epochs=100)
model.fit(X, y)
# 预测新数据
new_data = np.array([[1, 2, 1]])
prediction = model.predict(np.c_[new_data, np.ones(1)])
```
这里假设你的数据集保存在一个名为`your_data.csv`的文件中,你需要替换它为你的数据集的文件名。在准备数据时,我们将目标变量`Purchased`转换为数字0和1,其中0表示不购买,1表示购买。
在训练模型时,我们使用`Perceptron`类,将学习率设置为0.1,迭代次数设置为100。
最后,我们还演示了如何使用模型来预测新数据。在这个例子中,我们使用了一个新的数据点[1, 2, 1],代表一个女性,年龄在30-40岁之间,预估薪资在50k-80k之间。我们将其传递给`predict`函数,得到了预测结果。
阅读全文
相关推荐


















