lesson6 字典

#字典作用:存多个值,key-value存取,取值速度快

定义:key必须是不可变类型,value可以是任意类型

info1={'name':'egon',
       'age':18,
       'sex':'male',
       'a':{2:'d',
            'ad':('d'),
            (54):[12,434,56]}
      } #本质info=dict({....})
print(info1)
#或
info2=dict(name='egon',
           age=18,
           sex='male')
print(info2)
#或
info3=dict([['name','egon'],('age',18)])
print(info3)
#或
{}.fromkeys(('name','age','sex'),None)

{‘name’: ‘egon’, ‘age’: 18, ‘sex’: ‘male’, ‘a’: {2: ‘d’, ‘ad’: ‘d’, 54: [12, 434, 56]}}
{‘name’: ‘egon’, ‘age’: 18, ‘sex’: ‘male’}
{‘name’: ‘egon’, ‘age’: 18}

{‘age’: None, ‘name’: None, ‘sex’: None}

{}.fromkeys(('name','age','sex'),(1,2,3))

{‘age’: (1, 2, 3), ‘name’: (1, 2, 3), ‘sex’: (1, 2, 3)}

操作

1.按key存取value:

a = info1['age']
print(a)
b = info1['a'][54][1]
print(b)

18
434

2.长度len

print(len(info1))
print(len(info2))
print(len(info3))

4
3
2

3.成员运算in和 not in(针对keys)

print('ses' in info1)
print('sex' in info1)

False
True

4.删除

del删除

print(info1)
del info1['a'][54][1]
print('del 删除:',info1)

{‘name’: ‘egon’, ‘age’: 18, ‘sex’: ‘male’, ‘a’: {2: ‘d’, ‘ad’: ‘d’, 54: [12, 434, 56]}}
del 删除: {‘name’: ‘egon’, ‘age’: 18, ‘sex’: ‘male’, ‘a’: {2: ‘d’, ‘ad’: ‘d’, 54: [12, 56]}}

.pop()删除

info1.pop('e','18888')#“k[,d]”表示当需要删除的键不存在的时候,返回'18888'
print(info1)
info1.pop('name','18888')
print('.pop()删除:',info1)

{‘name’: ‘egon’, ‘age’: 18, ‘sex’: ‘male’, ‘a’: {2: ‘d’, ‘ad’: ‘d’, 54: [12, 56]}}
.pop()删除: {‘age’: 18, ‘sex’: ‘male’, ‘a’: {2: ‘d’, ‘ad’: ‘d’, 54: [12, 56]}}

5.键keys(),值values(),键值对items()

#字典特有的方法
print(info1.__dir__())

[‘repr’, ‘hash’, ‘getattribute’, ‘lt’, ‘le’, ‘eq’, ‘ne’, ‘gt’, ‘ge’, ‘iter’, ‘init’, ‘len’, ‘getitem’, ‘setitem’, ‘delitem’, ‘contains’, ‘new’, ‘sizeof’, ‘get’, ‘setdefault’, ‘pop’, ‘popitem’, ‘keys’, ‘items’, ‘values’, ‘update’, ‘fromkeys’, ‘clear’, ‘copy’, ‘doc’, ‘str’, ‘setattr’, ‘delattr’, ‘reduce_ex’, ‘reduce’, ‘subclasshook’, ‘init_subclass’, ‘format’, ‘dir’, ‘class’]

6.循环

for items in info1:
    print(items)

age
sex
a
k1

7.更新update

print('未更新前:',info1)#未更新前
info1.update(k1=123, sex= 'female')
print('更新过后:', info1)

未更新前: {‘age’: 18, ‘sex’: ‘male’, ‘a’: {2: ‘d’, ‘ad’: ‘d’, 54: [12, 56]}}
更新过后: {‘age’: 18, ‘sex’: ‘female’, ‘a’: {2: ‘d’, ‘ad’: ‘d’, 54: [12, 56]}, ‘k1’: 123}

8.字典形式传值: “**”+字典,传值

template = "I am {name}, age:{age}"
#可以用.format()形式传入
v = template.format(**{'name':'abc','age':19})
print(v)

I am abc, age:19

GridSearchCV是scikit-learn库中的一个工具,用于超参数调优。它通过穷举搜索的方式,尝试所有可能的超参数组合,并使用交叉验证来评估每组超参数的性能,从而找到最佳的超参数组合。以下是GridSearchCV的一些关键点: 1. **超参数调优**:超参数是模型在训练前需要设置的参数,例如KNN算法中的k值、决策树的最大深度等。GridSearchCV通过尝试不同的超参数组合来找到最佳组合。 2. **交叉验证**:GridSearchCV使用交叉验证来评估每组超参数的性能。交叉验证将数据集分成若干份,轮流用其中的一份作为测试集,其余的作为训练集,最终取所有评估结果的平均值作为性能指标。 3. **参数网格**:需要定义一个参数网格(param_grid),即所有可能的超参数组合。GridSearchCV会遍历这个网格中的所有组合。 4. **结果分析**:GridSearchCV会返回一个包含所有评估结果的字典,可以通过`cv_results_`属性访问这些结果。 以下是一个使用GridSearchCV进行超参数调优的示例: ```python from sklearn.model_selection import GridSearchCV from sklearn.neighbors import KNeighborsClassifier from sklearn.datasets import load_iris from sklearn.metrics import accuracy_score # 加载数据集 iris = load_iris() X = iris.data y = iris.target # 定义模型 knn = KNeighborsClassifier() # 定义参数网格 param_grid = { 'n_neighbors': [3, 5, 7, 9], 'weights': ['uniform', 'distance'], 'metric': ['euclidean', 'manhattan'] } # 定义GridSearchCV grid_search = GridSearchCV(knn, param_grid, cv=5, scoring='accuracy') # 训练模型 grid_search.fit(X, y) # 输出最佳参数 print("Best parameters:", grid_search.best_params_) # 使用最佳参数进行预测 best_knn = grid_search.best_estimator_ y_pred = best_knn.predict(X) # 评估模型 accuracy = accuracy_score(y, y_pred) print("Accuracy:", accuracy) ``` 在这个示例中,我们使用了KNN算法,并通过GridSearchCV尝试了不同的k值、权重和距离度量方法。最终,我们输出了最佳参数组合,并使用这些参数进行预测和评估。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值