Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
This is a Python module to perform variable clustering (varclus) with a hierarchical structure. Varclus is a nice dimension reduction algorithm. Here is a short description:
import pandas as pd
from varclushi import VarClusHi
Create a VarClusHi object and pass the dataframe (df) to be analyzed as a parameter, you can also specify
Then call method varclus(), which performs hierachical variable clustering algorithm
demo1_df = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv', sep=';')
demo1_df.drop('quality',axis=1,inplace=True)
demo1_vc = VarClusHi(demo1_df,maxeigval2=1,maxclus=None)
demo1_vc.varclus()
<varclushi.varclushi.VarClusHi at 0x15f96e35e10>
Call info, you can get the number of clusters, number of variables in each cluster (N_vars), variance explained by each cluster (Eigval1), etc.
demo1_vc.info
Cluster N_Vars Eigval1 Eigval2 VarProp
0 0 3 2.141357 0.658413 0.713786
1 1 3 1.766885 0.900991 0.588962
2 2 2 1.371260 0.628740 0.685630
3 3 2 1.552496 0.447504 0.776248
4 4 1 1.000000 0.000000 1.000000
Call rsquare, you can get the (1 - rsquare) ratio of each variable
demo1_vc.rsquare
Cluster Variable RS_Own RS_NC RS_Ratio
0 0 fixed acidity 0.882210 0.277256 0.162976
1 0 density 0.622070 0.246194 0.501362
2 0 pH 0.637076 0.194359 0.450478
3 1 free sulfur dioxide 0.777796 0.010358 0.224530
4 1 total sulfur dioxide 0.786660 0.042294 0.222761
5 1 residual sugar 0.202428 0.045424 0.835525
6 2 sulphates 0.685630 0.106022 0.351653
7 2 chlorides 0.685630 0.048903 0.330534
8 3 citric acid 0.776248 0.398208 0.371810
9 3 volatile acidity 0.776248 0.040920 0.233299
10 4 alcohol 1.000000 0.082055 0.000000
Requirements: Python 3.4+
Install by pip:
pip install varclushi
The parameters controlling this algorithm only include second eigenvalues and max number of clusters. I do not develop other functions because it is enough for my use. If you have a need for more flexibility, you can reach out to me via xuanjing@hotmail.com.
Comments for source code will be added once I have time.
Thank my former manager ***, I first heard of this method from him. Thank my current manager Mr. Mingsong Li, who gave me enough encouragement and support to complete this project.
FAQs
A package for variable clustering
We found that varclushi demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.