numpy(一)内部机理

1.介绍

         numpy库是python对矩阵操作的库,接下来每天我会发表一篇对numpy的介绍,直到完结。

2.ndarray类型

          numpy 最重要的类型是N 维数组对象 ndarray。而ndarray内含有什么呢?

        (1)一个指向数据的指针。

        (2)数据类型(dtype)。

        (3)一个表示数组形状(shape)的元组。

        (4)一个跨度元组(stride)

        内部结构如下图所示:

为了更好的说明,这儿举个小例子,如下图所示,这个img变量表示一张图片,大小为(1685,1007,3)。

 我们这个时候有三种访问数据的方式(其实是指针的运用)

#1.最外层访问    (相当于单指针,访问结果为1007*3个数据)
img[0]   ~ img[1684]    

#2.次外层范问     (相当于二重指针,范问结果为3个数据)
img[0][0] ~ img[0][1006]
img[1684][0] ~ img[1684][1006]   

#最外层访问       (相当于三重指针,范问结果为单个像素)
img[0][0][0]
img[1684][1006][2]

下图为使用pycharm 查看数据的图         

 3.数据类型(dtype)

        numpy数据类型比较多,其中为了区别bool、intfloatcomplex这些python内置类型,numpy中特意在后面加入_来区分,总结为下面的表格。

名称描述
bool_布尔型数据类型(True 或者 False)
int_默认的整数类型
intp用于索引的整数类型
int8字节(-128 to 127)
int16整数(-32768 to 32767)
int32整数(-2147483648 to 2147483647)
int64整数(-9223372036854775808 to 9223372036854775807)
uint8/uint16/uint32/uint32无符号整数
float_float64 类型的简写
float16半精度浮点数
float32单精度浮点数
float64双精度浮点数
complex_complex128 类型的简写,即 128 位复数
complex64复数,表示双 32 位浮点数(实数部分和虚数部分)
complex128复数,表示双 64 位浮点数(实数部分和虚数部分)
datatime54时间类型

4.区分dtype、astype、shape、ndim、size

        (1)dtype :ndarray对象的内置函数,可以获得数据类型

        (2)astype: 转化数据类型

        (3)shape:获得各维度的尺度

        (4)ndim:    获得数组的维度,结果是1个整形

        (5)size :  获得数组元素的个数

上例子

a=np.array([[1.2,2.41,1.2,1.3],[4.2,5.1,6.4,2.3],[23,11,1.1,2.4]]) #创建矩阵,后面写
print('ndim={}\nshape={}\ndtype={}'.format(a.ndim,a.shape,a.dtype))
b=a.astype(np.int32) #转为int型,会截断数据
print(b)


"""
结果如下:
ndim=2
shape=(3, 4)
dtype=float64
[[ 1  2  1  1]
 [ 4  5  6  2]
 [23 11  1  2]]
"""

        

ps:今天先写这些,觉得写的还不错的给个赞呗.

     错误是难免的,如果有错误的地方,请联系我。

### 半监督随机森林模型的工作原理 #### 特征选择与多样性构建 在半监督环境中,随机森林通过引入未标记的数据来增强模型的学习能力。具体而言,在每次创建子集用于训练单棵决策树时,不仅会从已标注数据集中抽取样本来保持原有随机森林的特点,还会加入定比例的未标注样本[^3]。 #### 多视图学习策略应用 借鉴协同训练的思想,对于每棵树的选择过程中采用不同的特征子空间或视角来进行分裂节点的操作。这意味着即使面对同份无标签记录也能依据各自选定属性维度得出差异化的分类倾向,从而间接实现对未知类别信息的有效推测并反馈给整体框架作为辅助判断材料。 #### 自举法扩充训练集合 利用自举重采样的方式生成多个版本的基础估计器(即弱分类器),这些基础估计器共同构成最终的强大预测者——随机森林本身。当处理到那些缺乏明确目标变量指导的新实例时,则允许内部各成员间相互协作评估其最有可能归属哪类,并据此更新权重参数直至收敛稳定为止[^1]。 ```python from sklearn.ensemble import RandomForestClassifier import numpy as np class SemiSupervisedRandomForest: def __init__(self, n_estimators=100): self.model = RandomForestClassifier(n_estimators=n_estimators) def fit(self, X_labeled, y_labeled, X_unlabeled=None): if X_unlabeled is not None and len(X_unlabeled) > 0: pseudo_labels = self._generate_pseudo_labels(X_unlabeled) combined_X = np.vstack((X_labeled, X_unlabeled)) combined_y = np.concatenate([y_labeled, pseudo_labels]) self.model.fit(combined_X, combined_y) else: self.model.fit(X_labeled, y_labeled) def _generate_pseudo_labels(self, X_unlabeled): initial_guesses = self.model.predict_proba(X_unlabeled).argmax(axis=1) return initial_guesses def predict(self, X_test): return self.model.predict(X_test) ``` 此代码片段展示了如何在个简化版的半监督设置下使用伪标签技术扩展原始有标签数据集以供更广泛的探索性分析和建模用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山上有多花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值