示例#1
0
    def neuron(self, p_class, age, sib_sp, par_ch, fare, sex_female, sex_male,
               embarked_c, embarked_q, embarked_s):
        clf = PNN(verbose=False, std=10)
        clf.fit(X_train, y_train)
        x_test = np.array([[
            p_class, age, sib_sp, par_ch, fare, sex_female, sex_male,
            embarked_c, embarked_q, embarked_s
        ]])
        y_predict = clf.predict(x_test)

        return float(y_predict)
import pandas as pd
from neupy.algorithms import PNN

# read data from the csv files
train_data = pd.DataFrame(pd.read_csv('processed_input/train.csv'))
test_data = pd.DataFrame(pd.read_csv('processed_input/test.csv'))

# print train_data.describe

# split data in to target and data
X_train = train_data.drop(columns='Made Donation in March 2007', axis=1)
y_train = train_data['Made Donation in March 2007']
X_test = test_data.drop(columns='Made Donation in March 2007', axis=1)
IDs = test_data['ID']

# instantiate the PNN model
pnn = PNN(verbose=True)

# fit to training data and then predict
prediction = pnn.fit(X_train, y_train).predict_proba(X_test)

# concatenate IDs and the prediciton
pred = pd.concat([
    IDs,
    pd.DataFrame(prediction.astype(float),
                 columns=['Made Donation in March 2007'])
],
                 axis=1)

#write prediction to csv
pred.to_csv('output/pnn_prediction.csv', index=False)
                            cv=cross_validation)
    print("")
    print("Cross Validation: {0} (+/- {1})".format(abs(score.mean().round(2)),
                                                   (score.std() * 2).round(2)))
    print("")

    #Prediction
    Y_predict = pnn.predict(X_test)
    print(Y_test.values)
    print(Y_predict)
    print("Accuracy: {0}".format(
        metrics.accuracy_score(Y_test, Y_predict).round(2)))

else:
    pnn = GaussianNB()
    pnn.fit(X_train, Y_train)
    print(
        'Sigma: {0}'.format(pnn.sigma_)
    )  #Standard deviation is estimated using maximum likelihood, so one sigma per variable and per class

    # Cross validataion
    score = cross_val_score(pnn,
                            X_train,
                            Y_train,
                            scoring='accuracy',
                            cv=cross_validation)
    print("")
    print("Cross Validation: {0} (+/- {1})".format(abs(score.mean().round(2)),
                                                   (score.std() * 2).round(2)))
    print("")