使用Python的Statsmodel生成预测值

时间:2015-10-06 02:34:32

标签: python statsmodels

我无法使用Python的StatsModels生成预测值。我希望做的是给出优惠券价值的具体值并产生概率。例如...... 40美分优惠券应预测x%概率。

任何建议都将不胜感激。我附加了GitHub链接和代码。

__author__ = 'deaco'
#http://statsmodels.sourceforge.net/devel/generated/statsmodels.regression.linear_model.RegressionResults.html
#http://statsmodels.sourceforge.net/stable/examples/notebooks/generated/discrete_choice_example.html
import pandas as pd
import sys
import numpy as np
##import sklearn.linear_model as sk
#import CSV Data
import statsmodels.api as sm
data = pd.read_csv('CouponData.csv')

df = pd.DataFrame()

CouponValue = data["CouponValue"]
Redeemed = data["Redeemed"]

y = Redeemed
x = sm.add_constant(CouponValue)

# Logit Model
logit_mod = sm.Logit(y, x)
logit_res = logit_mod.fit()
print(logit_res.summary())


print("Chi Square Results")
print(logit_res.pred_table())

ActualNoEstNo = logit_res.pred_table()[0][0]
ActualNoEstYes = logit_res.pred_table()[0][1]
ActualYesEstNo = logit_res.pred_table()[1][0]
ActualYesEstYes = logit_res.pred_table()[1][1]

print("Observations")
print(logit_res.nobs)

print("Actual No / Estimated No")
print(ActualNoEstNo)

print("Actual No / Estimated Yes")
print(ActualNoEstYes)

print("Actual Yes / Estimated No")
print(ActualYesEstNo)

print("Actual Yes / Estimated Yes")
print(ActualYesEstYes)

CorrectClassificationRate = (ActualYesEstYes + ActualNoEstNo) / logit_res.nobs
MisclassificationRate = (ActualNoEstYes + ActualYesEstNo) / logit_res.nobs

print("Correct Classification Rate")
print(str(CorrectClassificationRate * 100) + "%")

print("Misclassification Rate")
print(str(MisclassificationRate * 100) + "%")

print("Switch @")
print((-1 * logit_res.params[0])/logit_res.params[1])

name = 'results.txt'  # Name of text file coerced with +.txt

file = open(name,'r+')   # Trying to create a new file or open one
file.write(str(logit_res.summary()) + "\n")
file.write("Correct Classification Rate" + "\n")
file.write(str(CorrectClassificationRate * 100) + "%" + "\n")
file.write("Misclassification Rate" + "\n")
file.write(str(MisclassificationRate * 100) + "%\n")


file.write(str(data.describe()))

file.close()


predictionValues = [.1]
#file.write(str())
print(logit_mod.predict(predictionValues))

GitHub:https://github.com/deacons2016/Statistics-Models/tree/master/Coupon

0 个答案:

没有答案