Exemplo n.º 1
0
def mainpca():
    unknowndata = UnknownData()  # 未知数据产生聚类中心
    unknowndata = fill(unknowndata, 1778, 336, 254)
    unknowndata = normalization(unknowndata, 1778, 336)
    U1, S1, V1 = pca(np.array(unknowndata, dtype='float'), 2)
    init_centroids = np.array(kpp_centers(U1, 2))
    idx, centroids_all = runKmeans(U1, init_centroids, 100)
    centroids = centroids_all[-1]
    print("感知不明数据产生的聚类中心点:\n", centroids[0], centroids[1])
    # plotData(U1, centroids_all, idx)
    # plt.savefig('F:\\导出的图片.png')
    # plt.show()

    problemdata = ProblemData()  # 问题数据
    problemdata = fill(problemdata, 2093, 336, 299)
    problemdata = normalization(problemdata, 2093, 336)
    U2, S2, V2 = pca(np.array(problemdata, dtype='float'), 2)
    # plt.scatter(U2[:, 0], U2[:, 1])

    testdata = TestData()  # 测试正确率的数据
    testdata = fill(testdata, 476, 336, 68)
    testdata = normalization(testdata, 476, 336)
    U3, S3, V3 = pca(np.array(testdata, dtype='float'), 2)
    # plt.scatter(U3[:, 0], U3[:, 1],c='orange')
    # plt.show()

    # plt.subplot2grid((2,2),(0,0))
    # plt.scatter(U2[:, 0], U2[:, 1])
    # plt.subplot2grid((2,2),(0,1))
    # plt.scatter(U3[:, 0], U3[:, 1],c='orange')
    # # plt.savefig('F:\\导出的图片1.png')
    # plt.subplot2grid((2,2),(1,0))
    # plotData(U1, centroids_all, idx)
    # # plt.savefig('F:\\导出的图片3.png')
    # plt.show()

    # a = np.random.randint(0, 84)
    data_7, day, ECI, time, name = PredictData()  # 做感知差识别的数据
    data_7 = fill(data_7, 7, 336, 1)
    data_7 = normalization(data_7, 7, 336)
    U4, S4, V4 = pca(np.array(data_7, dtype='float'), 2)
    data_arg = U4[day]
    print("降维后的感知差识别数据:", data_arg[0], data_arg[1])
    print("ECI:", ECI)
    print("time:", time)
    print("name:", name)

    T = U2  # 预测
    P = U3
    num1 = num2 = 0
    num3 = num4 = 0
    string1 = '该日数据存在感知差问题'
    string2 = '该日数据感知正常'
    for i in range(2093):
        if euler_distance(T[i], centroids[0]) <= euler_distance(
                T[i], centroids[1]):
            num1 += 1
        else:
            num2 += 1
    if num1 >= num2:
        print("感知差聚类中心点为:", centroids[0][0], centroids[0][1])
        # centroids0为问题小区中心点
        for i in range(476):
            if euler_distance(P[i], centroids[0]) <= euler_distance(
                    P[i], centroids[1]):
                num3 += 1
        print('预测准确度为:', '%.2f' % (100 * num3 / 476), '%')
        dis1 = euler_distance(data_arg, centroids[0])
        dis2 = euler_distance(data_arg, centroids[1])
        if dis1 < dis2:
            string = string1
            print(string)
        else:
            string = string2
            print(string)
    else:
        print("感知正常中心点为:", centroids[1][0], centroids[1][1])
        # centroids1为问题小区中心点
        for i in range(476):
            if euler_distance(P[i], centroids[0]) >= euler_distance(
                    P[i], centroids[1]):
                num4 += 1
        print('预测准确度为:', '%.2f' % (100 * num4 / 476), '%')
        dis1 = euler_distance(data_arg, centroids[0])
        dis2 = euler_distance(data_arg, centroids[1])
        if dis1 > dis2:
            string = string1
            print(string)
        else:
            string = string2
            print(string)
    return string, ECI, time, name
Exemplo n.º 2
0
        # model_file = 'net/net-5-2-78.15%/encode.ckpt'
        model_file = 'net/net-5-3-72.69%/encode.ckpt'
        # model_file = 'net/net-5-4-80.46%/encode.ckpt'
        # model_file = 'net/net-5-5-86.76%/encode.ckpt'
        saver.restore(sess, model_file)
        # print(sess.run(weights['encoder_h1']))
        encoder_result = sess.run(encoder_op, feed_dict={X: data})
        # # plt.scatter(encoder_result[:, 0], encoder_result[:, 1])
    return encoder_result


if __name__ == '__main__':

    unknowndata = UnknownData()
    unknowndata = fill(unknowndata, 1778, 336, 254)
    unknowndata = normalization(unknowndata, 1778, 336)
    result = encode(unknowndata)

    # tf.reset_default_graph()
    # problemdata = ProblemData()
    # problemdata = fill(problemdata, 2093, 336, 299)
    # problemdata = normalization(problemdata, 2093, 336)
    # result_ = encode(problemdata)

    tf.reset_default_graph()
    testdata = TestData()
    testdata = fill(testdata, 476, 336, 68)
    testdata = normalization(testdata, 476, 336)
    result__ = encode(testdata)

    # init_centroids = np.array(kpp_centers(result, 2))
Exemplo n.º 3
0
from test_data_new import TestData
# from en_coder_4 import encode
from en_coder_5 import encode


def euler_distance(point1, point2):
    # 计算两点之间的欧拉距离,支持多维
    distance = 0.0
    for a, b in zip(point1, point2):
        distance += math.pow(a - b, 2)
    return math.sqrt(distance)


unknowndata = UnknownData()                          #未知数据产生聚类中心
unknowndata = fill(unknowndata, 1778, 336, 254)
unknowndata = normalization(unknowndata, 1778, 336)
U1 = encode(unknowndata)
init_centroids = np.array(kpp_centers(U1, 2))
idx, centroids_all = runKmeans(U1, init_centroids, 100)
centroids = centroids_all[-1]
print("感知不明数据产生的聚类中心点:\n", centroids[0], centroids[1])
# plotData(U1, centroids_all, idx)
# plt.scatter(U1[:, 0], U1[:, 1])
# plt.savefig('F:\\导出的图片.png')
# plt.show()

tf.reset_default_graph()
problemdata = ProblemData()                           #问题数据
problemdata = fill(problemdata, 2093, 336, 299)
problemdata = normalization(problemdata, 2093, 336)
U2 = encode(problemdata)
Exemplo n.º 4
0
        #     _, c = sess.run([optimizer, cost], feed_dict={X: data})
        #     if epoch % 100 == 0:
        #         print("cost={:.9f}".format(c))
        # encoder_result = sess.run(encoder_op, feed_dict={X: data})
        # plt.scatter(encoder_result[:, 0], encoder_result[:, 1])
        # saver.save(sess, 'net/net-4-/encode.ckpt')

        model_file = 'net/net-4-80%/encode.ckpt'
        saver.restore(sess, model_file)
        encoder_result = sess.run(encoder_op, feed_dict={X: data})
        plt.scatter(encoder_result[:, 0], encoder_result[:, 1])
    return encoder_result

unknowndata = UnknownData()
unknowndata = fill(unknowndata, 1778, 336, 254)
unknowndata = normalization(unknowndata, 1778, 336)
result = encode(unknowndata)
# # plt.show()

# tf.reset_default_graph()
# problemdata = ProblemData()
# problemdata = fill(problemdata, 2093, 336, 299)
# problemdata = normalization(problemdata, 2093, 336)
# result_ = encode(problemdata)

init_centroids = np.array(kpp_centers(result, 2))
idx, centroids_all = runKmeans(result, init_centroids, 100)
centroids = centroids_all[-1]
plotData(result, centroids_all, idx)

plt.show()