从键盘输入一个字符串,字符串中只包含若干字母,统计每个字母出现的次数,按出现频率从高到低输出这些字母,全部输出小写形式
按照要求实现代码如下:
words_count = {}
words = input()
for w in words:
w = w.lower()
words_count[w] = words_count.get(w,0)+1
words_count = sorted(words_count.items(),key=lambda x:x[1],reverse=True)
result = [item[0] for item in words_count]
print(''.join(result))
运行结果:
介绍ROC和AUC之前,再介绍两个指标,它们是让ROC,AUC可以无视样本不平衡的关键,分别是:灵敏度,1-特异度,也叫做 真正率(TPR)和假正率(FPR)
灵敏度(Sensitivity) = TP/(TP+FN)
特异度(Specificity) = TN/(FP+TN)
可以看出灵敏度和召回率一模一样,假正率(FPR) = 1- 特异度 = FP/(FP+TN)
我们发现TPR和FPR分别是基于实际表现1和0出发的,也就是说它们分别在实际的正样本和负样本中来观察相关概率问题。总样本中,90%是正样本,10%是负样本。我们知道用准确率是有水分的,但是用TPR和FPR不一样。这里,TPR只关注90%正样本中有多少是被真正覆盖的,而与那10%毫无关系,同理,FPR只关注10%负样本中有多少是被错误覆盖的,也与那90%毫无关系,所以可以看出:如果我们从实际表现的各个结果角度出发,就可以避免样本不平衡的问题了,这也是为什么选用TPR和FPR作为ROC/AUC的指标的原因。
def count_letters(s):
"""
统计一个字符串中每个字母出现的次数,并按照出现频率从高到低输出这些字母的小写形式
"""
# 定义字典存储每个字母出现次数
letter_dict = {}
# 遍历字符串,统计每个字母出现次数
for letter in s:
if letter.isalpha(): # 判断是否为字母
if letter.lower() not in letter_dict:
letter_dict[letter.lower()] = 1
else:
letter_dict[letter.lower()] += 1
# 按照出现次数从高到低排序
result = sorted(letter_dict.items(), key=lambda x: x[1], reverse=True)
# 输出结果
for item in result:
print(item[0], item[1])