In [15]:
import pandas as pd
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.linear_model import SGDClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import OneHotEncoder
from sklearn import cross_validation
from sklearn.metrics import roc_auc_score
from sklearn.feature_selection import RFECV

In [16]:
#donations = pd.read_csv('../data/donations.csv').sort('projectid')
projects = pd.read_csv('../data/projects.csv').sort('projectid')
outcomes = pd.read_csv('../data/outcomes.csv').sort('projectid')
#resources = pd.read_csv('../data/resources.csv').sort('projectid')
sample = pd.read_csv('../data/sampleSubmission.csv').sort('projectid')
#essays = pd.read_csv('../data/essays.csv').sort('projrfecv = RFECV(model,cv=lolo,scoring = 'roc_auc')ectid')

In [17]:
projects = projects.merge(outcomes, how ='inner')
dates = np.array(projects.date_posted)
train_idx = np.where((dates < '2013-05-01') & (dates >= '2010-01-01'))[0]
test_idx = np.where(dates >= '2013-05-01')[0]
outcomes = np.array(projects.is_exciting)

In [18]:
projects.secondary_focus_area = projects.secondary_focus_area.fillna(projects.primary_focus_area)
projects.secondary_focus_subject = projects.secondary_focus_subject.fillna(projects.primary_focus_subject)
projects = projects.fillna(method='pad')

projects['month'] = ''

for i in range(0,projects.shape[0]):
    projects['month'][i] = projects.date_posted[i][5:7]

In [19]:
cols = ['school_city', 'school_state', 'school_zip', 'school_metro', 'school_district', 'school_county', 'school_charter', 'school_magnet',
 'school_year_round', 'school_nlns', 'school_kipp', 'school_charter_ready_promise', 'teacher_prefix', 'teacher_teach_for_america', 'teacher_ny_teaching_fellow', 'primary_focus_subject','primary_focus_area', 
'secondary_focus_subject', 'secondary_focus_area', 'resource_type', 'poverty_level', 'grade_level',
'students_reached', 'eligible_double_your_impact_match', 'eligible_almost_home_match','month' ]
projects = np.array(projects[cols])

In [20]:
for i in range(0, projects.shape[1]):
    le = LabelEncoder()
    projects[:,i] = le.fit_transform(projects[:,i])
projects = projects.astype(float)

In [21]:
model = LogisticRegression(C = 0.1)
rfecv = RFECV(model,scoring = 'roc_auc')
projects = rfecv.fit_transform(projects, outcomes=='t')
train, crossval, outcomeTrain, outcomeCrossVal = projects[train_idx], projects[test_idx], outcomes[train_idx], outcomes[test_idx]
model.fit(train, outcomeTrain=='t')
preds = model.predict_proba(crossval)[:,1]

In [22]:
value = roc_auc_score(outcomeCrossVal=='t', preds)
value


Out[22]:
0.58174019538816657

In [23]:
rfecv.n_features_


Out[23]:
23

In [24]:
np.size(cols)


Out[24]:
26

In [25]:
rfecv.support_


Out[25]:
array([False,  True, False,  True, False,  True,  True,  True,  True,
        True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True,  True,  True,  True,  True], dtype=bool)

In [26]:
train.shape


Out[26]:
(338360, 23)

In [26]: