Сюжет SVM с Matplotlib?

У меня есть некоторые интересные пользовательские данные. Это дает некоторую информацию о своевременности определенных задач, которые пользователи должны были выполнить. Я пытаюсь выяснить, если late - который говорит мне, если пользователи вовремя (0), немного поздно (1) или довольно поздно (2) - предсказуемо / объяснимо. Я генерирую late из столбца, дающего информацию о светофоре (зеленый = не поздно, красный = супер поздно).

Вот что я делаю:

  #imports
  import pandas as pd
  import numpy as np
  import matplotlib.pyplot as plt
  from sklearn import preprocessing
  from sklearn import svm
  import sklearn.metrics as sm




  #load user data
  df = pd.read_csv('April.csv', error_bad_lines=False, encoding='iso8859_15', delimiter=';')


  #convert objects to datetime data types
  cols = ['Planned Start', 'Actual Start', 'Planned End', 'Actual End']
  df = df[cols].apply(
  pd.to_datetime, dayfirst=True, errors='ignore'
  ).join(df.drop(cols, 1))

  #convert datetime to numeric data types
  cols = ['Planned Start', 'Actual Start', 'Planned End', 'Actual End']
  df = df[cols].apply(
  pd.to_numeric, errors='ignore'
  ).join(df.drop(cols, 1))


  #add likert scale for green, yellow and red traffic lights
  df['late'] = 0
  df.ix[df['End Time Traffic Light'].isin(['Yellow']), 'late'] = 1
  df.ix[df['End Time Traffic Light'].isin(['Red']), 'late'] = 2

  #Supervised Learning

    #X and y arrays
  # X = np.array(df.drop(['late'], axis=1))
  X = df[['Planned Start', 'Actual Start', 'Planned End', 'Actual End', 'Measure Package', 'Measure' , 'Responsible User']].as_matrix()

  y = np.array(df['late'])

    #preprocessing the data
  X = preprocessing.scale(X)


  #Supper Vector Machine
  clf = svm.SVC(decision_function_shape='ovo')
  clf.fit(X, y) 
  print(clf.score(X, y))

Сейчас я пытаюсь понять, как построить границы решения. Моя цель - построить двустороннее рассеяние с Actual End а также Planned End, Естественно, я проверил документацию (см., Например, здесь). Но я не могу обернуть голову вокруг этого. Как это работает?

1 ответ

Решение

В качестве ориентира на будущее вы, как правило, будете получать более быстрые (и более качественные) ответы, если вы предоставите общедоступный набор данных с вашим кодом пробной печати, поскольку у нас нет 'April.csv'. Вы также можете оставить свой код для переноса данных для "April.csv". С этим сказал...

Себастьян Рашка создал пакет mlxtend, в котором есть довольно крутая функция построения графиков. Он использует matplotlib под капотом.

import numpy as np
import pandas as pd
from sklearn import svm
from mlxtend.plotting import plot_decision_regions
import matplotlib.pyplot as plt


# Create arbitrary dataset for example
df = pd.DataFrame({'Planned_End': np.random.uniform(low=-5, high=5, size=50),
                   'Actual_End':  np.random.uniform(low=-1, high=1, size=50),
                   'Late':        np.random.random_integers(low=0,  high=2, size=50)}
)

# Fit Support Vector Machine Classifier
X = df[['Planned_End', 'Actual_End']]
y = df['Late']

clf = svm.SVC(decision_function_shape='ovo')
clf.fit(X.values, y.values) 

# Plot Decision Region using mlxtend's awesome plotting function
plot_decision_regions(X=X.values, 
                      y=y.values,
                      clf=clf, 
                      legend=2)

# Update plot object with X/Y axis labels and Figure Title
plt.xlabel(X.columns[0], size=14)
plt.ylabel(X.columns[1], size=14)
plt.title('SVM Decision Region Boundary', size=16)

введите описание изображения здесь

Другие вопросы по тегам