【问题标题】:How to implement 'And' function in perceptron in scikit-learn如何在 scikit-learn 的感知器中实现“与”功能
【发布时间】: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 %

这是我的问题:

  1. 为什么感知器在 100 次迭代后仍未训练。
  2. 我从手册中了解到,如果未将权重分配给特征,它们会自动分配。
  3. 如果我想在 0 和 1 的范围内随机为特征分配权重,我该怎么做。

【问题讨论】:

    标签: python scikit-learn neural-network perceptron


    【解决方案1】:

    拆分您已经很小的数据集 - 您没有给 Perceptron 正确学习的机会。除此之外,在这种情况下,缩放输入数据集没有任何意义。

    演示:

    In [257]: ppn.fit(X,y)
    Out[257]:
    Perceptron(alpha=0.0001, class_weight=None, eta0=0.1, fit_intercept=True,
          max_iter=None, n_iter=100, n_jobs=1, penalty=None, random_state=0,
          shuffle=True, tol=None, verbose=0, warm_start=False)
    
    In [258]: ppn.predict([[1,1], [0,1]])
    Out[258]: array([1, 0], dtype=int64)
    

    【讨论】:

    • 谢谢。如果我的训练数据有 10 个特征列,形式为 ['D-0','D-1','D-2','D-3','D-4','D-5',' D-6','D-7','D-8','D-9'] 和一个输出标签'C'。如何在 0 和 1 之间为特征随机分配权重。
    猜你喜欢
    • 2018-04-23
    • 1970-01-01
    • 2017-09-27
    • 2015-06-12
    • 2015-10-25
    • 2017-11-26
    • 2020-08-24
    • 2015-12-17
    • 2015-08-13
    相关资源
    最近更新 更多