【发布时间】:2018-07-28 08:30:56
【问题描述】:
我是机器学习和 scikit-learn 的新手。我试图在 scikit-learn 中实现“和”功能并编写了如下的小代码:
import pandas as pd
from pandas import Series,DataFrame
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
df = DataFrame([[0,0,0],[0,1,0],[1,0,0],[1,1,1]],columns=list('abc'))
X = df[['a','b']]
y=df['c']
scalar_model = StandardScaler()
train_test_split =X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
scalar_model = StandardScaler()
scalar_model.fit(X_train)
X_train_std = scalar_model.transform(X_train)
X_test_std = scalar_model.transform(X_test)
from sklearn.linear_model import Perceptron
#perceptron initialization
ppn = Perceptron(n_iter = 100,eta0=0.1,random_state=0)
#fit the model with standardized data
ppn.fit(X_train_std,y_train)
#make predications
y_pred = ppn.predict(X_test_std)
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y_test, y_pred) * 100
error = (1-accuracy_score(y_test, y_pred))*100
print("Accuracy: {} %".format(accuracy))
print("error: {} %".format(error))
运行代码后,我得到以下结果:
Accuracy: 0.0 %
error: 100.0 %
这是我的问题:
- 为什么感知器在 100 次迭代后仍未训练。
- 我从手册中了解到,如果未将权重分配给特征,它们会自动分配。
- 如果我想在 0 和 1 的范围内随机为特征分配权重,我该怎么做。
【问题讨论】:
标签: python scikit-learn neural-network perceptron