
数据挖掘
文章平均质量分 64
Sany 何灿
这个作者很懒,什么都没留下…
展开
-
Geochemistry Pi 开源软件 - 数据挖掘自动化 - 浙大长期远程实习
Geochemistry π is a Python framework for data-driven geochemistry discovery. It provides an extendable tool and one-stop shop for geochemical data analysis on tabular data.原创 2023-02-10 20:54:19 · 1311 阅读 · 1 评论 -
pandas.DataFrame 使用.std() 计算时出现nan值,并且nan值为float类型,如何快速替换成0
问题:对pandas的DataFrame 或者Series 使用自带的.std()方法,出现nan值,为什么会出现?怎么最快的方式替换成0?>>> a = pd.Series([1, 2])Out[1]:0 11 2dtype: int64>>> a.std()Out[2]: 0.7071067811865476>>> b = pd.Series([1])Out[3]: array([1])>>>原创 2021-08-12 22:24:30 · 4181 阅读 · 0 评论 -
DataWhale | WisdomOcean项目 | 数据分析 | 学习笔记(二)
赛题要求:通过分析渔船北斗设备位置数据,具体判断出是拖网作业、围网作业还是流刺网作业,本质是“轨迹(序列数据)+多分类”的任务,评估指标选用的是F1值。可能存在的特征工程切入点:表征渔船的轨迹表征渔船不同状态下的信息轨迹数据数据分析:基于不同类型渔船的轨迹可视化结果可知,其轨迹虽然有不同变化,但是仍然不具有很强的区分性。基于不同类型渔船的方向可视化结果可知,每个类别的渔船方向变化很快,因此此特征对于类别的判断不具有很强的区分性。基于不同类型渔船的轨迹速度分布图和分位图可知,其存在差异很大原创 2021-04-16 23:42:45 · 302 阅读 · 0 评论 -
DataWhale | WisdomOcean项目 | Python 地理空间数据处理 | 学习笔记(一)
Python地理空间数据处理常用库主要功能:(一)Shapely是python中开源的空间几何对象库,支持Point(点),LineString(线), Polygon(面)等几何对象及相关空间操作。几何对象可以和numpy.array互相转换。可以求线的长度(length),面的面积(area),对象之间的距离(distance),最小最大距离(hausdorff_distance)。可以对几何对象求几何中心(centroid),缓冲区(buffer),最小旋转外接矩形(minimum_rot原创 2021-04-15 00:04:07 · 277 阅读 · 0 评论 -
制作三维旋转动图(以三维PCA图为例)| Python
问题:如何用python绘制能够旋转的三维动图解决:Codeimport matplotlib.pyplot as pltfrom matplotlib import animation import numpy as npdef componential_plot_animated_3d(reduced_data, labels, pc, variable): """draw a animated componential plot in 3d for three principle原创 2021-04-10 13:04:27 · 3865 阅读 · 7 评论 -
PCA图 (主成分 biplot & 三维图) 绘制与解释 | python
问题:如何绘制二维的主成分图,以及如何解释?Code:import matplotlib.pyplot as pltimport numpy as npdef biplot(reduced_data, labels, pc, variable): """plot compositional biplot for two principle components :param reduced_data: data processed by PCA :param la原创 2021-04-05 22:12:37 · 23945 阅读 · 5 评论 -
分类问题之决策阈值 - precision vs recall 详解
什么是决策阈值?sklearn没有让我们直接设置决策阈值,但它让我们可以访问用于进行预测的决策得分(决策函数o/p)。我们可以从决策函数输出中选择最佳得分,并将其设置为决策阈值,并将小于该决策阈值的所有决策得分值视为负类(0),大于该决策阈值的所有决策得分值视为正类(1)。使用各种决策阈值的精度-召回率曲线,我们可以选择决策阈值的最佳值,以便根据我们的项目是面向精度还是面向召回率分别给出高精度(不太影响召回率)或高召回率(不太影响精度)。这样做的主要目的是根据我们的ML项目分别是面向精度的还是面向召回原创 2021-04-02 00:03:41 · 9133 阅读 · 2 评论 -
sklearn的decision_function (以SVC.decision_function()为例)详解
decision function是sklearn机器学习框架的分类器类中的一种method。该method基本上返回一个Numpy数组,其中每个元素表示分类器对x_test的预测样本是位于超平面的右侧还是左侧,以及离超平面有多远。它还告诉我们,分类器为x_test预测的每个值是正值(大幅度正值),还是负值(大幅度负值),以及相应的信任程度。decision function method背后的数学:让我们考虑SVM对于线性可分二进制类的分类问题:损失函数:这种线性可分的二分类的假设:优化算原创 2021-04-01 23:28:02 · 12900 阅读 · 0 评论 -
如何用sklearn实现基于分层抽样的交叉验证(构造一个类)
from sklearn.metrics import f1_scorefrom sklearn.model_selection import StratifiedKFoldfrom sklearn.base import clone, BaseEstimator, TransformerMixinclass stratified_cross_val_score(BaseEstimator, TransformerMixin): """实现基于分层抽样的k折交叉验证"""原创 2020-08-15 17:19:31 · 928 阅读 · 0 评论 -
xgboost.plot_importance() 产生的图片大小更改
plt.rcParams["figure.figsize"] = (14, 8)xgboost.plot_importance(xgb_clf)原创 2020-08-07 16:56:59 · 2559 阅读 · 0 评论 -
学习曲线 learning curves | 判断回归模型是否欠拟合和过拟合
过拟合:一个模型在训练集上表现良好,通过交叉验证指标(评估模型的泛化能力)得出的泛化能力很差。欠拟合:在训练集和交叉验证指标上都表现不好。意义:过拟合说明模型太复杂,欠拟合说明模型太简单。学习曲线:画出模型在训练集上的表现,同时画出以训练集规模为自变量 的训练集函数,为了得到图像,需要在训练集的不同规模子集上进行多次训练。Code:画出给定训练集后的模型学习曲线from sklearn.metrics import mean_squared_errorfrom sklearn.model_sel原创 2020-07-22 14:06:20 · 4867 阅读 · 0 评论 -
归一化 (Normalization)、标准化 (Standardization)和中心化/零均值化 (Zero-centered)
1. 概念归一化:1)把数据变成(0,1)或者(1,1)之间的小数。主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理,更加便捷快速。2)把有量纲表达式变成无量纲表达式,便于不同单位或量级的指标能够进行比较和加权。归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量。归一化和标准化的区别:归一化是将样本的特征值转换到同一量纲下把数据映射到[0,1]或者[-1, 1]区间内,仅由变量的极值决定,因区间放缩法是归一化的一种。标准化是依照特征矩阵的列处理数据,其通转载 2020-07-22 16:00:55 · 13632 阅读 · 0 评论 -
纯随机采样(train_test_split)和分层采样(StratifiedShuffleSplit)| sklearn库实现
Scikit-Learn 提供了一些函数,可以用多种方式将数据集分割成多个子集。sklearn.model_selection.train_test_split是纯随机的取样方法,即没有对原数据集进行分层,具体调用如下:from sklearn.model_selection import train_test_splittrain_set, test_set = train_test_split(data, test_size=0.2, random_state=42)其中,random_s原创 2020-07-19 17:35:07 · 14369 阅读 · 2 评论 -
模型调参 | 网格搜索(GridSearchCV)与随机搜索(RandomizedSearchCV)
模型微调1.网格搜索微调的一种方法是手工调整超参数,直到找到一个好的超参数组合。这么做的话会非常冗长,你也可能没有时间探索多种组合。你应该使用 Scikit-Learn 的 GridSearchCV 来做这项搜索工作。你所需要做的是告诉GridSearchCV 要试验有哪些超参数,要试验什么值, GridSearchCV 就能用交叉验证试验所有可能超参数值的组合。例如,下面的代码搜索了 RandomForestRegressor 超参数值的最佳组合:from sklearn.model_selec原创 2020-07-19 13:45:55 · 7228 阅读 · 3 评论 -
apply、map和applymap三种函数的区别 | pandas
apply:应用在DataFrame的行或列中,也可以应用到单独一个Series的每个元素中map:应用在单独一个Series的每个元素中applymap:应用在DataFrame的每个元素中转载 2020-07-17 16:36:33 · 632 阅读 · 0 评论 -
解决方式 | AttributeError: ‘Pipeline‘ object has no attribute ‘coef_‘
如运行以下代码:from sklearn.linear_model import LinearRegressionfrom skelarn.preprocessing import StandardScalerfrom sklearn.pipeline import Pipelineimport pandas as pddf = pd.read_csv("dataset.csv")num_pipe = Pipeline([ ("scaler", StandardScaler()), (原创 2020-07-13 10:03:55 · 7872 阅读 · 1 评论 -
梯度下降法详解+代码:批量梯度下降(Batch GD)、小批量梯度下降(Mini-batch GD)、随机梯度下降(Stochastic GD)
一个简单的线性回归模型,有两种不同的训练方法来得到模型的最优解:直接使用封闭方程进行求根运算,得到模型在当前训练集上的最优参数(即在训练集上使损失函数达到最小值的模型参数)。使用迭代优化方法:梯度下降(GD),在训练集上,它可以逐渐调整模型参数以获得最小的损失函数,最终,参数会收敛到和第一种方法相同的的值。梯度下降的变体形式:批量梯度下降(Batch GD)、小批量梯度下降(Mini-batch GD)、随机梯度下降(Stochastic GD)。梯度下降法梯度下降是一种非常通用的优化算法,它能原创 2020-07-02 23:46:12 · 10755 阅读 · 6 评论 -
sklearn.model_selection.train_test_split(random_state=42) 与 np.random.seed(42)的联系和原理详解
np.random.seed() 利用随机数种子,使得每次生成的随机数相同。问题:np.random.seed()是否一直有效np.random.seed(Argument)的参数作用?Code 1import numpy as np if __name__ == '__main__': i = 0 while (i < 6): if (i < 3): np.random.seed(0) print(np.random.randn(1, 5)) els原创 2020-05-31 21:11:13 · 3982 阅读 · 0 评论 -
保存和导出训练模型 | joblib 模块
from sklearn.externals import joblibjoblib.dump(my_model, "model.pkl")# ...my_model_loaded = joblib.load("my_model.pkl")原创 2020-05-16 09:41:43 · 980 阅读 · 0 评论 -
构建函数 — 划分测试集和训练集
import numpy as npdef split_train_test(data, test_ratio): shuffled_indices = np.random.permutation(len(data)) test_set_size = int(len(data) * test_ratio) test_indices = shuffled_indices[:test_set_size] train_indices = shuffled_indices[test_set_size:]原创 2020-05-12 16:49:58 · 279 阅读 · 0 评论 -
箱形图分析
反映原始数据分布的特征,可以进行多组数据分布特征的比较。绘制方法:上四分位点(Quartile):Q3Q_3Q3中位数:Q2Q_2Q2下四分位点:Q1Q_1Q1四分位距(InterQuartile Range,IQR):IQR=Q3−Q1IQR = Q_3-Q_1IQR=Q3−Q1上边缘:非异常值范围内的最大值,Q3+1.5IQRQ_3+1.5IQRQ3+1.5IQR...原创 2020-04-16 22:01:23 · 2703 阅读 · 0 评论 -
np.reshape(-1)、np.reshape(-1, 1)、np.reshape(1, -1)详解
np.reshape 规范新的shape必须原创 2020-04-15 17:48:12 · 12674 阅读 · 1 评论 -
scikit-learn实现|交叉验证 cross-validation 详解(5-Folds为例)| 分层采样
一般来说,验证集越大,我们对模型质量的度量中的随机性(也称为“噪声”)就越小,它就越可靠。但是,通常我们只能通过划分出更多训练数据来获得一个大的验证集,而较小的训练数据集意味着更糟糕的模型!而交叉验证可是用来解决这个问题。什么是交叉验证?在交叉验证中,我们将数据集等量划分成几个小的子集,然后对不同的子集运行建模过程,以获得每个子集模型的拟合效果的指标(可用MAE 平均绝对误差表示)。我们...原创 2020-04-01 02:33:50 · 31999 阅读 · 3 评论 -
数据分析Seaborn常用画图方式汇总|多种方法画图找趋势、找关系、找分布|20 mins速成|Kaggle 学习(一)
Trends- A trend is defined as a pattern of change.sns.lineplot - Line charts are best to show trends over a period of time, and multiple lines can be used to show trends in more than one group....原创 2020-03-28 23:50:02 · 1133 阅读 · 0 评论 -
sklearn.pipeline 详解 | 构造规则、运行机制、连接不同pipeline
一、Pipeline构造器规则:需要一个定义步骤顺序的 (名字, 估计器)对的列表。除了最后一个是估计器(estimator),其余都要是转换器(transformer,即要有fit_transform()方法),名字可以随意取。名词解释:可参考【Scikit-Learn | 自定义转换器(transformer)】【 fit()、transform()、fit_transform() 三者联...原创 2020-04-12 20:57:04 · 8777 阅读 · 4 评论 -
numpy.argpatition() 应用详解 + TopK值
numpy.argpartition(a, kth, axis=-1, kind=‘introselect’, order=None)(一)一般numpy中以arg开头的函数都是返回下标,而不改变原数组。参数a是指传入的Numpy.array参数kth是指列表中下标为k位置应该放置该数组中第k大的值例1:import numpy as nparr = np.array([3, 9,...原创 2020-04-11 17:40:26 · 4711 阅读 · 1 评论 -
Scikit-Learn | 自定义转换器(transformer)
一、什么是transformer在Scikit-Learn的设计原则里,所有对象的接口一致且简单。估计器(estimator):在机器学习中,任何基于数据集,可以对一些参数都被称为估计器(比如RandomForest()、LinearRegression())。转换器(transformer):可以转换数据集中数值的估计器,如处理缺失值的SimpleImputer(),可参考【处理残缺值(...原创 2020-04-09 15:39:47 · 2691 阅读 · 0 评论 -
LabelEncoder()与OneHotEncoder()关系及区别汇总
联系:LabelEncoder()和OneHotEncoder()都是Scikit-Learn的一个模块。都是用来处理数据集中的类别变量.【处理类别变量(categorical variable)python-sklearn实现 | 三种常用方法】,可用如下方法调用。from sklearn.preprocessing import LabelEncoderfrom sklearn.pr...原创 2020-04-09 14:00:08 · 1616 阅读 · 0 评论 -
sklearn | fit()、transform()、fit_transform() 三者联系与区别
fit()是一个方法(method),与估计器(estimator)结合,需要一个数据集作为参数,用来训练estimator,如estimator.fit()。任何其它用来指导估计过程的参数都被当做超参数,并且是通过估计器的参数设置,将超参数设置成实例变量。transform()是一个方法,用于estimator.fit()之后,返回的是经过转换的数据集。from sklearn.impu...原创 2020-04-05 22:22:11 · 2329 阅读 · 0 评论 -
数据预处理 | 处理类别变量(categorical variable)python-sklearn实现 | 三种常用方法| Kaggle 学习笔记(四)
方法一:移除法(Drop)将含有类别变量的列移除。import pandas as pd# 读取数据data = pd.read_csv("filename.csv")# 获取数据集中的含有类别变量的列的列名,并用列表表示s = (data.dtypes == 'object')object_cols = list(s[s].index)# 移除含有类别变量的列drop_d...原创 2020-04-04 01:03:56 · 11464 阅读 · 0 评论 -
数据预处理 | 处理残缺值(Missing value)python-sklearn实现| 三种常用方法 | Kaggle 学习笔记(三)
方法一: 移除法(Drop)将含有残缺值的列直接丢弃。这种方法可能会导致大量有用的信息丢失。import pandas as pd# 读取数据data = pd.read_csv("filename.csv") # 提取出含有残缺值的列cols_with_missing = [col for col in data.columns if data[col].isnull().an...原创 2020-04-04 00:12:01 · 2840 阅读 · 0 评论 -
ModuleNotFoundError: No module named 'pandas.tools' 解决方法
在旧版本的pandas里引入 scatter_matrixfrom pandas.tools.plotting import scatter_matrix在pandas的0.24.0及以后的版本里引入 scatter_matrixfrom pandas.plotting import scatter_matrix...原创 2020-04-03 23:22:48 · 3458 阅读 · 1 评论