示例#1
0
def predict(modelpath):
    trainx, trainy = Dataset.GetDatafromDict()
    X_train, X_test, Y_train, Y_test = train_test_split(trainx,
                                                        trainy,
                                                        test_size=0.3,
                                                        random_state=0)
    nomtrainx, nomtrainy = Preprocess(X_test, Y_test)
    model = joblib.load(filename=modelpath)

    # TestSample=len(Y_test)
    # possample=[ Y_train[i] for i in range(TestSample) if Y_test[i]==0]
    # negsample=[ Y_train[i] for i in range(TestSample) if Y_test[i]==1]

    TestSample = len(Y_test)
    possample = np.sum(Y_test)
    negsample = TestSample - possample

    res = model.predict(nomtrainx)

    TP, TN, FP, FN = 0, 0, 0, 0
    for id, i in enumerate(res):
        if res[i] == Y_test[id] and Y_test[id] == 1:
            TP += 1
        elif res[i] == Y_test[id] and Y_test[id] == 0:
            TN += 1
        elif res[i] != Y_test[id] and Y_test[id] == 0:
            FP += 1
        else:
            FN += 1

        print("预测结果 :{}---原始数据:{}".format(STATUS[res[id]], STATUS[Y_test[id]]))

    print("result:acc={} , recall={}".format((TP + TN) / TestSample,
                                             TP / (TP + FN)))
示例#2
0
def train():
    # trainx,trainy=CreatTrainDataset()
    trainx, trainy = Dataset.GetDatafromDict()
    X_train, X_test, Y_train, Y_test = train_test_split(trainx,
                                                        trainy,
                                                        test_size=0.3,
                                                        random_state=0)

    #保持样本的随机性
    radom_sample = [i for i in range(len(Y_train))]
    random.shuffle(radom_sample)
    X_train = X_train[radom_sample]
    Y_train = Y_train[radom_sample]

    nomtrainx, nomtrainy = Preprocess(X_train, Y_train)
    print(nomtrainx.shape, nomtrainy.shape)
    # 1、创建了一个线性逻辑分类器实例去拟合数据
    logreg = linear_model.LogisticRegression(C=1e5, max_iter=200)

    # 2、测试数据集
    test_data = np.expand_dims(trainx[2], axis=0)

    # 3、训练拟合函数
    logreg.fit(nomtrainx, nomtrainy)
    # 4、保存模型
    joblib.dump(filename='LR.model', value=logreg)
    # 5、预测结果
    out = logreg.predict(test_data)
    print(out)
示例#3
0
            return weight


def loadData():
    train_x = []
    train_y = []
    fileIn = open('./data/testdata.txt')
    for line in fileIn.readlines():
        lineArr = line.strip().split()
        train_x.append([1.0, float(lineArr[0]), float(lineArr[1])])
        train_y.append(float(lineArr[2]))
    return mat(train_x), mat(train_y).transpose()


if __name__ == "__main__":
    STATUS = ['非ST', 'ST']
    save_model = "weights.pkl"

    train, label = Dataset.GetDatafromDict()
    trainarrayx = mat(train)
    labelarray = mat(label).transpose()
    logistreg = LR(trainarrayx, labelarray)
    # print(trainarrayx.shape,labelarray.shape)
    opts = {"alpha": 0.001, "maxIter": 200, "optimizeType": "gradDescent"}
    logistreg.train(opts, save_model)
    weights = logistreg.load_weight(save_model)
    res = logistreg.predict(weights, trainarrayx, labelarray)

    for i in range(len(res)):
        print("预测结果 :{}---原始数据:{}".format(STATUS[res[i]], STATUS[label[i]]))