def __init__(self, predict_range=1): """ 初始化KDJ模型 :param predict_range: K预测未来涨跌时间范围 :return: """ super(KDJModel, self).__init__() self.predict_range = predict_range self.para_k, self.para_d, self.para_j = 0.0, 0.0, 0.0 self.KDJ = KDJ() self.LC = LabelConstructor(predict_range)
class KDJModel(Model): def __init__(self, predict_range=1): """ 初始化KDJ模型 :param predict_range: K预测未来涨跌时间范围 :return: """ super(KDJModel, self).__init__() self.predict_range = predict_range self.para_k, self.para_d, self.para_j = 0.0, 0.0, 0.0 self.KDJ = KDJ() self.LC = LabelConstructor(predict_range) def train(self, dataset): print("Training SVM Model...") X_train = self.KDJ(dataset) # 数据缩放 self.min_max_scaler = preprocessing.MinMaxScaler() X_train = self.min_max_scaler.fit_transform(X_train) print(self.min_max_scaler.scale_, self.min_max_scaler.min_) # 得到label Y Y_train = self.LC.construct(dataset) #for (i,d) in enumerate(dataset): # print(d, X_train_minmax[i], Y_train[i]) # 用SVM拟合数据 self.svm = SVC() self.svm.fit(X_train, Y_train) print("Linear SVM Model:", self.svm) def predict(self, dataset): k, d, j = self.KDJ.current(dataset[-1], True) y = self.svm.predict(self.min_max_scaler.transform([k,d,j]))[0] print(dataset[-1], [k,d,j], y) return y