将Cluster对象转换为byte或bytearray对象

时间:2017-03-08 22:19:55

标签: python sql-server python-3.x scikit-learn byte

目标

我想从scikit-learn插入一个集群对象到一个sql-server表(varbinary(max)列)。

我为分析团队创建了大数据开发和测试环境。我知道有更好的选择,但sql-server和python是我现在必须使用的。

问题

我需要能够将群集对象(在此示例中为MiniBatchKMeans对象)转换为字节或字节数组,以便能够插入到sql-server表中。我得到一个MiniBatchKMeans对象不可迭代的类型错误。

我最好的方法来解决这个问题?我是否需要找到MiniBatchKMeans对象的起始地址,然后是对象的大小,并一次迭代一个字节的内存块?

我找到了一个参考:on how to chunk a byte string,但这似乎没什么帮助。

转换测试代码

def Test_03():
    # variables
    string_byte_error_msg = 'No error'
    string_bytearray_error_msg = 'No error'
    bool_byte_no_error = False
    bool_bytearray_no_error = False

    # generate knn cluster object
    clust_knn_obj = MiniBatchKMeans(n_clusters = 10, init = 'k-means++', n_init = 5)

    # convert to byte type
    try:
        byte_knn_clust = bytes(clust_knn_obj)
    except TypeError as e_t:
        string_byte_error_msg = e_t.args[0]
    except Exception as e:
        string_byte_error_msg = e.args[0]
    else:
        bool_byte_no_error = True
    finally:
        pass

    # convert to byte array
    try:
        byte_array_knn_clust = bytearray(clust_knn_obj)
    except TypeError as ba_e_t:
        string_bytearray_error_msg = ba_e_t.args[0]
    except Exception as ba_e:
        string_bytearray_error_msg = ba_e.args[0]
    else:
        bool_bytearray_no_error = True
    finally:
        pass

    # below will insert into the mssql database in a varbinary(max) column
    #...
    pass

错误消息

string_byte_error_msg = "'MiniBatchKMeans' object is not iterable"
string_bytearray_error_msg = "'MiniBatchKMeans' object is not iterable"

1 个答案:

答案 0 :(得分:0)

这就是我解决这个问题的方法。作为一个初学者,我现在已经存在" pickle。"所以我腌制了这个物体并把它保存在驱动器上以备将来使用。