importlib模块和split的结合使用

博客介绍了在Python的main.py文件中,运用importlib模块导入a.py并运行其中show()方法的代码。importlib模块支持传入字符串引入模块,通过传入show()的路径可达到执行效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、给定一个文件结构,在main.py中于运用importlib 导入a.py运行其中的show()方法

├── clazz
│   ├── __init__.py
│   ├── a.py
│   └── b.py
└── main.py

a.py 的代码

def show():
    print("show A")

importlib模块支持传入字符串来引入一个模块,我们可以将show()的路径传入importlib从而达到执行的效果

方法一:
import importlib
a=importlib.import_module("clazz.a")#将模块路径作为参数传入importlib
a.show()
方法二:
#将方法show一并写入路径,通过spilt进行分割
improt importlib
path='clazz.a.show'
cls_path,classname=path.rsplit('.',maxsplit=1)#通过右分割'.'的方式得到cls_path 和执行函数名
cls=importlib.import_module(cls_path)
cls_obj=getattr(cls,classname)#反射得到对象
cls_obj()#直接运行得到运行结果

 

转载于:https://www.cnblogs.com/dushangguzhousuoli/p/11044081.html

修正import numpy as np import importlib from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler # 数据预处理 iris = load_iris() X = iris.data[:100] # Setosa(0)Versicolor(1) y = np.where(iris.target[:100] == 0, -1, 1) # 转换为{-1,1} scaler = StandardScaler() X_scaled = scaler.fit_transform(X) X_train, X_test, y_train, y_test = train_test_split( X_scaled, y, test_size=0.3, stratify=y, random_state=42 ) # 弱分类器构建 def generate_weak_classifiers(X, num_per_feature=5): classifiers = [] n_features = X.shape[1] for feat_idx in range(n_features): feat_values = X[:, feat_idx] thresholds = np.linspace(np.min(feat_values), np.max(feat_values), num_per_feature + 2)[1:-1] for thresh in thresholds: classifiers.append((feat_idx, thresh)) return classifiers M = 20 weak_classifiers = generate_weak_classifiers(X_train, num_per_feature=5) def predict_weak_classifier(X, classifier): feat_idx, threshold = classifier return np.where(X[:, feat_idx] > threshold, 1, -1) H_train = np.array([predict_weak_classifier(X_train, wc) for wc in weak_classifiers]).T H_test = np.array([predict_weak_classifier(X_test, wc) for wc in weak_classifiers]).T # QUBO模型构建 def build_qubo_matrix(H, y, lambda_reg=0.05): N, M = H.shape HTH = H.T @ H yH = y @ H Q = np.zeros((M, M)) np.fill_diagonal(Q, [HTH[j, j] - 2*yH[j] + lambda_reg for j in range(M)]) for j in range(M): for k in range(j+1, M): Q[j, k] = 2 * HTH[j, k] Q[k, j] = 2 * HTH[j, k] return Q Q = build_qubo_matrix(H_train, y_train, lambda_reg=0.05) # Kaiwu SDK 求解 import importlib def load_module(): kaiwu = importlib.import_module('kaiwu') return kaiwu.do_something() import kaiwu as kw kw.license.init(user_id='106158405202239490', sdk_code='2a0In6Z9D2andYKWTt0wJtUjUKPxDj') # kaiwu.py class SimulatedAnnealingSolver: ... def some_function(): # 在需要时再导入(此时模块已初始化) from kaiwu import SimulatedAnnealingSolver solver = SimulatedAnnealingSolver() solver = SimulatedAnnealingSolver() result = solver.solve(Q) optimal_weights = result['solution'] # 模型评估 def strong_classifier_predict(X, weights, classifiers): predictions = np.zeros(X.shape[0]) for j, (feat_idx, threshold) in enumerate(classifiers): if weights[j] == 1: pred = np.where(X[:, feat_idx] > threshold, 1, -1) predictions += pred return np.sign(predictions) y_pred_test = strong_classifier_predict(X_test, optimal_weights, weak_classifiers) accuracy = np.mean(y_pred_test == y_test) print(f'最终强分类器在测试集上的准确率: {accuracy:.4f}')
最新发布
07-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值