整个文件生成onehot编码-sklearn方法

  • 把生物序列转化为onehot编码
  • 读取文件(注意这个文件没有fasta文件的描述行,只有序列行)
  • 保存为csv,每行表示一个字符
from numpy import array
from numpy import argmax
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import OneHotEncoder
import pandas as pd
import numpy as np
flag = 0 # 注意正样本改为1,负样本改为0,这是给数据加类别

def Process_one_hot(input_word):
    input_word = list(input_word)
    # print(input_word)
    #print(np.array(input_word))
    #print(len(input_word))
    onehot_encoder = OneHotEncoder(sparse=False)
    # integer_encoded = np.array(input_word).reshape(len(input_word), 1)
    integer_encoded = np.array(input_word).reshape(len(input_word), 1)
    #print(integer_encoded)
    onehot_encoded = onehot_encoder.fit_transform(integer_encoded)
    # print(onehot_encoded)
    return onehot_encoded
# one-hot编码转换成功,特征提取完毕
# 这里的问题是,我先把特征存起来吗,也可以
# 通过存的时候再添加y标签

def read_seq_save_onehot(read_file, save_file):
    #result_list = list()
    result_str = ''
    with open(read_file, "r") as f:
        
        for line in f.readlines():
            line = line.strip('\n')  # 去掉列表中每一个元素的换行符
            #result_list.append(line)  # 把序列存起来    # print(result_list)
            result_str = result_str + line # 变成字符串整体做onehot,现在再切分样本

    #print(result_str)
    onehot_encoded = Process_one_hot(result_str)
    save = pd.DataFrame(onehot_encoded, columns=['A', 'C', 'G', 'T'])
    #save = pd.DataFrame(onehot_encoded)
    save['Class'] = flag  # 增加新的列
    print(save)
    save.to_csv(save_file, mode='a', columns=['Class', 'A', 'C', 'G', 'T'],
                    index=False)  # a 表示追加;index=False,header=False表示不保存行索引和列标题




# onehot特征提取
# EI_false_test.txt   EI_false_train.txt   EI_true_test.txt   EI_true_train.txt
read_file = "EI_false_test.txt" # AAAAAAAAAAAAAAACCCGGGGAAATTT
# EI_false_test.csv EI_false_train.csv    EI_true_test.csv    EI_true_train.csv
save_file = "EI_false_test.csv"
read_seq_save_onehot(read_file,save_file)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值