楼主: ReneeBK
1646 10

[mlp]Keras Multilayer Perceptron for scikit-learn [推广有奖]

  • 1关注
  • 62粉丝

VIP

已卖:4900份资源

学术权威

14%

还不是VIP/贵宾

-

TA的文库  其他...

R资源总汇

Panel Data Analysis

Experimental Design

威望
1
论坛币
49655 个
通用积分
55.9937
学术水平
370 点
热心指数
273 点
信用等级
335 点
经验
57805 点
帖子
4005
精华
21
在线时间
582 小时
注册时间
2005-5-8
最后登录
2023-11-26

楼主
ReneeBK 发表于 2017-9-8 04:33:33 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
Keras Multilayer Perceptron for scikit-learn

Keras makes it very easy to implement deep-learning models, however these are not compatible with scikit-learn out-of-the-box. This prohibits our models to be tested using sciki-learn's methods GridSearchCV and cross_val_score.

I created this MLP class to be compatible with scikit-learn that contains the fit, predict, and predict_proba methods.

Install

pip install mlp

Quick guide

Initialize your classifier

from mlp import MLPclf = MLP(n_hidden=10, n_deep=3, l1_norm=0, drop=0.1, verbose=0)

Now evaluate your classifier with scikit-learn's cross_val_score

from sklearn.cross_validation import cross_val_scorescores = cross_val_score(clf, data, label, cv=5, n_jobs=-1, scoring='f1_weighted')print(scores)

本帖隐藏的内容

https://github.com/alvarouc/mlp


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:scikit-learn multilayer Learn multi Earn

沙发
ReneeBK 发表于 2017-9-8 04:34:09
  1. import warnings
  2. warnings.filterwarnings('ignore')
  3. from mlp import MLP
  4. import matplotlib.pyplot as plt
  5. from sklearn.datasets import make_moons
  6. import numpy as np
  7. import pandas as pd
  8. import seaborn as sns
  9. from sklearn.preprocessing import StandardScaler as SS
  10. %matplotlib inline
  11. data, label = make_moons(n_samples=500, noise=0.4)

  12. data_s = SS().fit_transform(data)

  13. plt.plot(data_s[np.where(label==0)[0],0],data[np.where(label==0)[0],1],'r.', label='Label = 0')
  14. plt.plot(data_s[np.where(label==1)[0],0],data[np.where(label==1)[0],1],'b.', label='Label = 1')

  15. plt.title('Moons')
  16. plt.xlabel('Feature 1')
  17. plt.ylabel('Feature 2')
  18. plt.legend()
复制代码

藤椅
ReneeBK 发表于 2017-9-8 04:34:30
  1. from sklearn.cross_validation import cross_val_score

  2. clf = MLP(n_hidden=10, n_deep=3, l1_norm=0, drop=0.1, verbose=1)

  3. scores = cross_val_score(clf, data, label, cv=5, n_jobs=1, scoring='roc_auc')
  4. print(scores)
复制代码

板凳
ReneeBK 发表于 2017-9-8 04:35:10
  1. Using MLP with sklearn's GridSearchCV
  2. In [3]:
  3. from sklearn.grid_search import GridSearchCV

  4. params = {'n_hidden': [10, 15],
  5.          'l1_norm': [0.0],
  6.          'n_deep': [2, 3],
  7.          'drop': [0.1]}

  8. clf_grid = GridSearchCV(clf, param_grid=params, scoring='roc_auc', cv=3, n_jobs=3)
  9. scores = cross_val_score(clf_grid, data, label, cv=5, n_jobs=1, scoring='roc_auc')
  10. print(scores)
复制代码

报纸
ReneeBK 发表于 2017-9-8 04:35:27
  1. Extracting layer representation
  2. In [4]:
  3. clf = MLP(n_hidden=8, n_deep=3, l2_norm=0.0, l1_norm=0.0, drop=0.0, verbose=0, early_stop=True,
  4.           max_epoch=10000, patience=1000)
  5. clf.fit(data, label)
  6. layers = clf.feed_forward(data)
  7. plt.plot(layers[2][label==0,0], layers[2][label==0,1],'.')
  8. plt.plot(layers[2][label==1,0], layers[2][label==1,1],'r.')
  9. plt.title('Trainning AUC {:.2f}'.format(clf.auc(data,label)))
复制代码

地板
ReneeBK 发表于 2017-9-8 04:36:12
  1. Plotting decision boundary
  2. In [2]:
  3. def plot_decision(clf, data):
  4.     xmin, ymin = data.min(axis=0)
  5.     xmax, ymax = data.max(axis=0)

  6.     x,y = np.meshgrid(np.linspace(xmin,xmax,100),np.linspace(ymin,ymax,100))
  7.     mesh = np.vstack((x.ravel(), y.ravel())).T
  8.     ypred = clf.predict(mesh)

  9.     plt.contourf(x, y, ypred.reshape(x.shape), alpha=0.5)
  10.     plt.scatter(data[label==0,0], data[label==0,1], marker='+')
  11.     plt.scatter(data[label==1,0], data[label==1,1], c= 'red', marker='x')
  12.     plt.xlim(xmin, xmax)
  13.     plt.ylim(ymin, ymax)
复制代码

7
ReneeBK 发表于 2017-9-8 04:36:42
  1. L2 norm effects
  2. In [5]:
  3. plt.figure(figsize=(25,5))
  4. for n, l2 in enumerate([0, 0.0001, 0.001, 0.01]):
  5.     clf = MLP(n_hidden=30, n_deep=3, l2_norm=l2, l1_norm=0, early_stop=False, max_epoch=10000)
  6.     clf.fit(data, label)
  7.     plt.subplot(1,5, n+1)
  8.     plot_decision(clf, data)
  9.     plt.title('L2 norm: {}'.format(l2))
复制代码

8
MouJack007 发表于 2017-9-8 05:45:31
谢谢楼主分享!

9
MouJack007 发表于 2017-9-8 05:45:47
已有 1 人评分论坛币 收起 理由
Nicolle + 20 鼓励积极发帖讨论

总评分: 论坛币 + 20   查看全部评分

10
jgw1213 发表于 2017-9-8 06:15:38
谢谢楼主分享!
已有 1 人评分论坛币 收起 理由
Nicolle + 20 鼓励积极发帖讨论

总评分: 论坛币 + 20   查看全部评分

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-22 08:23