我正在处理高度不平衡的数据集,我的想法是从我的libSVM模型中获取特征权重值.至于现在,我可以使用线性内核,在那里我可以获得特征权重,但是当我使用rbf或者poly,我无法实现我的目标.
在这里,我使用的sklearn是我的模型,很容易获得线性内核使用的特征权重.coef_.任何人都可以帮我做同样的事情rbf或poly?我到目前为止尝试做的事情如下:
svr = SVC(C=10, cache_size=200, class_weight='auto', coef0=0.0, degree=3.0, gamma=0.12,kernel='rbf', max_iter=-1, probability=True, random_state=0,shrinking=True, tol=0.001, verbose=False)
clf = svr.fit(data_train,target_train)
print clf.coef_
Run Code Online (Sandbox Code Playgroud) 我正在处理一个大的蛋白质序列(fasta)文件(> 8GB),我的想法是创建字典,其中键和值分别是蛋白质id和序列.
至于现在我可以使用pickle然后尝试打开数据并将数据转储到字典中cpickle(我读取pickle更快的数据转储cpickle速度并加载数据更快).但这里的主要问题是时间:制作和转储它作为字典需要花费太多时间和内存(PC有8GB内存).
有没有更快的选项可用于处理Python中的大文件?
这是我创建字典并转储数据的Python代码:
from Bio import SeqIO
import pickle,sys
fastaSeq = {}
with open('uniref90.fasta') as fasta_file:
for seq_record in SeqIO.parse(fasta_file, 'fasta'):
header =seq_record.id
uniID = header.split('_')[1]
seqs = str(seq_record.seq)
fastaSeq[uniID] = seqs
f = open('uniref90.obj', 'wb')
pickle.dump(fastaSeq, f, pickle.HIGHEST_PROTOCOL)
f.close()
Run Code Online (Sandbox Code Playgroud)
在单独的Python程序中加载字典并执行某些任务:
import cPickle as pickle
seq_dict = pickle.load(open("uniref90.obj", "rb"))
for skey in seq_dict.keys():
#doing something
Run Code Online (Sandbox Code Playgroud) 我想将其存储在某个变量中,然后将其传递给'if'条件,而不是写出长'if'语句.例如:
tempvar = '1 >0 and 10 > 12'
if tempvar:
print something
else:
do something
Run Code Online (Sandbox Code Playgroud)
在python中有可能吗?
谢谢你的建议,但我的问题是别的,我无法弄清楚.我正在文本文件中进行多字符串搜索,并尝试将多字符串转换为一个条件:
allspeciesfileter=['Homo sapiens', 'Mus musculus', 'Rattus norvegicus' ,'Sus scrofa']
multiequerylist=[]
if len(userprotein)> 0:
multiequerylist.append("(str("+ "'"+userprotein+ "'"+")).lower() in (info[2].strip()).lower()")
if len(useruniprotkb) >0:
multiequerylist.append("(str("+ "'"+useruniprotkb+ "'"+")).lower() in (info[3].strip()).lower()")
if len(userpepid) >0:
multiequerylist.append("(str("+ "'"+userpepid+ "'"+")).lower() in (info[0].strip()).lower()")
if len(userpepseq) >0:
multiequerylist.append("(str("+ "'"+userpepseq+ "'"+")).lower() in (info[1].strip()).lower()")
multiequery =' and '.join(multiequerylist)
for line in pepfile:
data=line.strip()
info= data.split('\t')
tempvar = bool (multiquery)
if tempvar:
do something
Run Code Online (Sandbox Code Playgroud)
但是那个多重查询不起作用