Skip to content

dingkun-swjtu/Intelligent_Algorithm_Library

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Intelligent Algorithm Library

1.1 机器学习

1.1.1 逻辑回归

  • 算法标签:#机器学习,#监督学习,#二分类
  • 算法简介:
    • 逻辑回归(Logistic Regression)是一种常用的分类算法,用于对样本进行分类。它利用逻辑函数(Logistic函数)将自变量线性组合转换为概率,从而判定样本属于哪个类别,并且可以为每个样本输出概率值。尽管 logistic 回归常用于二元分类问题,但它也用于多类别分类问题(这种情况下,logistic回归叫作「多类别 logistic 回归」或「多项式 回归」。
  • 算法API说明:
    • 算法输入:
# coding:utf-8
'''
@Time    : 2024/7/24 17:17
@Author  : dingkun-swjtu
@FileName: configs.py
@Desc    : 参数设置
'''

import argparse

parser = argparse.ArgumentParser()  # 参数输入

def get_args():
    parser.add_argument('--is_debug', type=bool, default=False, help="Whether to debug or not, TRUE or FALSE")
    parser.add_argument('--input_data_dir', type=str, default=r'../data/logistic_regression.txt',
                        help="The input data consists of multidimensional features and labels 'y', with labels Y being 0 and 1,"
                             "and the shape of the data is [number of samples, number of features + 1].")
    parser.add_argument('--test_size', type=float, default=0.33, help="test sample ratio")
    parser.add_argument('--model_save_path', type=str, default='./saved_model.pkl', help="model save path")

get_args()
args = parser.parse_args()
  • 算法输出:
if __name__ == "__main__":
    # return the saved model and test samples' accuracy
    loaded_model, accuracy = main(args)

1.1.2 线性回归

  • 算法标签:#机器学习,#监督学习,#回归
  • 算法简介:
    • 线性回归(Linear Regression)是一种统计学方法,用于建立两个或更多变量之间的线性关系。它可以用于预测目标变量(也称为因变量)的值,基于一个或多个输入变量(也称为自变量)的值。线性回归模型假设目标变量和输入变量之间存在线性关系。模型使用线性方程来描述这种关系,其中目标变量是自变量的线性组合,加上一个截距项。
  • 算法API说明:
    • 算法输入:
# coding:utf-8
'''
@Time    : 2024/7/23 20:49
@Author  : dingkun-swjtu
@FileName: configs.py
@Desc    : 参数设置
'''

import argparse

parser = argparse.ArgumentParser()  # 参数输入

def get_args():
    parser.add_argument('--is_debug', type=bool, default=False, help="Whether to debug or not, TRUE or FALSE")
    parser.add_argument('--input_data_dir', type=str, default=r'../data/linear_regression.txt',
                        help="input data, includes columns 'X' and 'y'")
    parser.add_argument('--test_size', type=float, default=0.4, help="test sample ratio")
    parser.add_argument('--n_iterations', type=int, default=100, help="number of iterations")
    parser.add_argument('--model_save_path', type=str, default='./saved_model.pkl', help="model save path")

get_args()
args = parser.parse_args()
  • 算法输出:
if __name__ == "__main__":
    # return the saved model and computed test samples' MSE
    loaded_model, mse = main(args)

1.1.3 多项式回归

  • 算法标签:#机器学习,#监督学习,#回归
  • 算法简介:
    • 多项式回归(Polynomial Ridge Regression)是一种回归分析方法,用于建立自变量和因变量之间的非线性关系。它通过将自变量的幂次作为回归模型的参数,拟合出一个多项式函数来描述自变量和因变量之间的关系。在实际应用中,多项式回归通常用于探究自变量和因变量之间的复杂关系,以及预测因变量在不同自变量取值下的表现。
  • 算法API说明:
    • 算法输入:
# coding:utf-8
'''
@Time    : 2024/7/23 20:49
@Author  : dingkun-swjtu
@FileName: configs.py
@Desc    : 参数设置
'''

import argparse

parser = argparse.ArgumentParser()  # 参数输入

def get_args():
    parser.add_argument('--is_debug', type=bool, default=False, help="Whether to debug or not, TRUE or FALSE")
    parser.add_argument('--input_data_dir', type=str, default=r'../data/polynomial_regression.txt',
                        help="input data, includes columns 'X' and 'y'")
    parser.add_argument('--test_size', type=float, default=0.4, help="test sample ratio")
    parser.add_argument('--poly_degree', type=int, default=15, help="The degree of the polynomial that the independent variable X will be transformed to.")
    parser.add_argument('--learning_rate', type=float, default=0.001, help="The step length that will be used when updating the weights.")
    parser.add_argument('--n_iterations', type=int, default=10000, help="The number of training iterations the algorithm will tune the weights for.")
    parser.add_argument('--model_save_path', type=str, default='./saved_model.pkl', help="model save path")

get_args()
args = parser.parse_args()
  • 算法输出:
if __name__ == "__main__":
    # return the saved model and computed test samples' MSE
    loaded_model, mse = main(args)

1.1.4 贝叶斯回归

  • 算法标签:#机器学习,#监督学习,#回归
  • 算法简介:
    • 贝叶斯回归(Bayesian Regression)是使用统计学中贝叶斯推断(Bayesian inference)方法求解的线性回归(linear regression)模型。
  • 算法API说明:
    • 算法输入:
# coding:utf-8
'''
@Time    : 2024/7/24 16:16
@Author  : dingkun-swjtu
@FileName: configs.py
@Desc    : 参数设置
'''

import argparse

parser = argparse.ArgumentParser()  # 参数输入

def get_args():
    parser.add_argument('--is_debug', type=bool, default=False, help="Whether to debug or not, TRUE or FALSE")
    parser.add_argument('--input_data_dir', type=str, default=r'../data/bayesian_regression.txt',
                        help="input data, includes columns 'X' and 'y'")
    parser.add_argument('--test_size', type=float, default=0.4, help="test sample ratio")
    parser.add_argument('--n_draws', type=int, default=2000, help="The number of simulated draws from the posterior of the parameters.")
    parser.add_argument('--poly_degree', type=int, default=4, help="The polynomial degree that the features should be transformed to. Allows for polynomial regression.")
    parser.add_argument('--sigma_sq0', type=int, default=100, help="The scale parameter of the prior scaled inverse chi squared distribution.")
    parser.add_argument('--cred_int', type=int, default=5, help="The credible interval (ETI in this impl.). 95 => 95% credible interval of the posterior of the parameters.")
    parser.add_argument('--model_save_path', type=str, default='./saved_model.pkl', help="model save path")

get_args()
args = parser.parse_args()
  • 算法输出:
if __name__ == "__main__":
    # return the saved model and computed test samples' MSE
    loaded_model, mse = main(args)

1.1.5 决策树回归

  • 算法标签:#机器学习,#监督学习,#回归
  • 算法简介:
    • 决策树回归(Decision Tree Regression)是直观运用概率分析的一种图解法,是一个基于分支的树模型,其中,每个内部结点表示在一个属性上的测试,每个分支代表一个属性输出,而每一个树叶结点代表类或类分布。树的最顶层是根结点。
  • 算法API说明:
    • 算法输入:
# coding:utf-8
'''
@Time    : 2024/7/24 19:49
@Author  : dingkun-swjtu
@FileName: configs.py
@Desc    : 参数设置
'''

import argparse

parser = argparse.ArgumentParser()  # 参数输入

def get_args():
    parser.add_argument('--is_debug', type=bool, default=False, help="Whether to debug or not, TRUE or FALSE")
    parser.add_argument('--input_data_dir', type=str, default=r'../data/decision_tree_regressor.txt',
                        help="input data, includes columns 'X' and 'y'")
    parser.add_argument('--test_size', type=float, default=0.3, help="test sample ratio")
    parser.add_argument('--model_save_path', type=str, default='./saved_model.pkl', help="model save path")

get_args()
args = parser.parse_args()
  • 算法输出:
if __name__ == "__main__":
    # return the saved model and computed test samples' MSE
    loaded_model, mse = main(args)

1.1.6 Lasso回归

  • 算法标签:#机器学习,#监督学习,#回归
  • 算法简介:
    • Lasso回归(Least Absolute Shrinkage and Selection Operator,最小绝对收缩和选择算子回归,Lasso Regression)是一种在统计学中广泛使用的回归分析方法。其核心在于通过对系数进行压缩,以达到变量选择和复杂度调整的目的,从而提高模型的预测精度和解释能力。Lasso回归在处理具有多重共线性数据或者高维数据时尤其有效。
  • 算法API说明:
    • 算法输入:
# coding:utf-8
'''
@Time    : 2024/7/25 9:50
@Author  : dingkun-swjtu
@FileName: configs.py
@Desc    : 参数设置
'''

import argparse

parser = argparse.ArgumentParser()  # 参数输入

def get_args():
    parser.add_argument('--is_debug', type=bool, default=False, help="Whether to debug or not, TRUE or FALSE")
    parser.add_argument('--input_data_dir', type=str, default=r'../data/lasso_regression.txt',
                        help="input data, includes columns 'X' and 'y'")
    parser.add_argument('--test_size', type=float, default=0.4, help="test sample ratio")
    parser.add_argument('--degree', type=int, default=15, help="The degree of the polynomial that the independent variable X will be transformed to.")
    parser.add_argument('--reg_factor', type=float, default=0.05, help="The factor that will determine the amount of regularization and feature shrinkage.")
    parser.add_argument('--learning_rate', type=float, default=0.001, help="The step length that will be used when updating the weights.")
    parser.add_argument('--n_iterations', type=int, default=4000, help="The number of training iterations the algorithm will tune the weights for.")
    parser.add_argument('--model_save_path', type=str, default='./saved_model.pkl', help="model save path")

get_args()
args = parser.parse_args()
  • 算法输出:
if __name__ == "__main__":
    # return the saved model and computed test samples' MSE
    loaded_model, mse = main(args)

1.1.7 主成分分析

  • 算法标签:#机器学习,#无监督学习,#聚类,#降维
  • 算法简介:
    • 主成分分析( Principal Component Analysis,PCA ),是多元统计分析中的一种手段,可以简化数据集,利用线性降维的方法对数据进行分析。
  • 算法API说明:
    • 算法输入:
# coding:utf-8
'''
@Time    : 2024/7/25 10:09
@Author  : dingkun-swjtu
@FileName: configs.py
@Desc    : 参数设置
'''

import argparse

parser = argparse.ArgumentParser()  # 参数输入

def get_args():
    parser.add_argument('--is_debug', type=bool, default=False, help="Whether to debug or not, TRUE or FALSE")
    parser.add_argument('--input_data_dir', type=str, default=r'../data/principal_component_analysis.txt',
                        help="The input data consists of multidimensional features and labels 'y', with labels Y being 0 ,..., N,"
                             "and the shape of the data is [number of samples, number of features + 1].")


get_args()
args = parser.parse_args()
  • 算法输出:
if __name__ == "__main__":
    main(args)

1.1.8 随机森林

  • 算法标签:#机器学习,#监督训练,#分类
  • 算法简介:
    • 随机森林(random forests)一种包含很多决策树的分类器,既可以用于处理分类和回归问题,也适用于降维问题。其对异常值与噪音也有很好的容忍,相较于决策树有着更好的预测和分类性能。
  • 算法API说明:
    • 算法输入:
# coding:utf-8
'''
@Time    : 2024/7/25 11:24
@Author  : dingkun-swjtu
@FileName: configs.py
@Desc    : 参数设置
'''

import argparse

parser = argparse.ArgumentParser()  # 参数输入


def get_args():
    parser.add_argument('--is_debug', type=bool, default=False, help="Whether to debug or not, TRUE or FALSE")
    parser.add_argument('--input_data_dir', type=str, default=r'../data/random_forest.txt',
                        help="The input data consists of multidimensional features and labels 'y', with labels Y being 0 ,..., N - 1,"
                             "and the shape of the data is [number of samples, N + 1].")
    parser.add_argument('--test_size', type=float, default=0.4, help="test sample ratio")
    parser.add_argument('--seed', type=int, default=2, help="seed")
    parser.add_argument('--n_estimators', type=int, default=100, help="The number of classification trees that are used.")
    parser.add_argument('--model_save_path', type=str, default='./saved_model.pkl', help="model save path")


get_args()
args = parser.parse_args()
  • 算法输出:
if __name__ == "__main__":
    # return the saved model and test samples' accuracy
    loaded_model, accuracy = main(args)

1.1.9 支持向量机

  • 算法标签:#机器学习,#监督学习,#二分类
  • 算法简介:
    • 支持向量机(Support Vector Machine,SVM)是一种用于分类和回归的监督学习算法。SVM的目标是找到一个最优边界,将不同类别的数据点分开。
  • 算法API说明:
    • 算法输入:
# coding:utf-8
'''
@Time    : 2024/7/25 14:06
@Author  : dingkun-swjtu
@FileName: configs.py
@Desc    : 参数设置
'''
import argparse

parser = argparse.ArgumentParser()  # 参数输入


def get_args():
    parser.add_argument('--is_debug', type=bool, default=False, help="Whether to debug or not, TRUE or FALSE")
    parser.add_argument('--input_data_dir', type=str, default=r'../data/support_vector_machine.txt',
                        help="The input data consists of multidimensional features and labels 'y', with labels Y being -1 and 1,"
                             "and the shape of the data is [number of samples, N + 1].")
    parser.add_argument('--test_size', type=float, default=0.33, help="test sample ratio")
    parser.add_argument('--kernel', type=str, default='rbf_kernel', help="Kernel function. Can be either polynomial, rbf or linear.")
    parser.add_argument('--power', type=int, default=4, help="The degree of the polynomial kernel. Will be ignored by the other kernel functions.")
    parser.add_argument('--coef', type=int, default=1, help="Bias term used in the polynomial kernel function.")
    parser.add_argument('--gamma', type=float, default=1000, help="Used in the rbf kernel function.")
    parser.add_argument('--model_save_path', type=str, default='./saved_model.pkl', help="model save path")


get_args()
args = parser.parse_args()
  • 算法输出:
if __name__ == "__main__":
    # return the saved model and test samples' accuracy
    loaded_model, accuracy = main(args)

1.1.10 决策树分类

  • 算法标签:#机器学习,#监督学习,#分类
  • 算法简介:
    • 决策树分类(Decision Tree Classifier)是直观运用概率分析的一种图解法,是一个基于分支的树模型,其中,每个内部结点表示在一个属性上的测试,每个分支代表一个属性输出,而每一个树叶结点代表类或类分布。树的最顶层是根结点。
  • 算法API说明:
    • 算法输入:
# coding:utf-8
'''
@Time    : 2024/7/25 15:02
@Author  : dingkun-swjtu
@FileName: configs.py
@Desc    : 参数设置
'''
import argparse

parser = argparse.ArgumentParser()  # 参数输入


def get_args():
    parser.add_argument('--is_debug', type=bool, default=False, help="Whether to debug or not, TRUE or FALSE")
    parser.add_argument('--input_data_dir', type=str, default=r'../data/decision_tree_classifier.txt',
                        help="The input data consists of multidimensional features and labels 'y', with labels Y being -1 and 1,"
                             "and the shape of the data is [number of samples, N + 1].")
    parser.add_argument('--test_size', type=float, default=0.33, help="test sample ratio")
    parser.add_argument('--kernel', type=str, default='rbf_kernel', help="Kernel function. Can be either polynomial, rbf or linear.")
    parser.add_argument('--power', type=int, default=4, help="The degree of the polynomial kernel. Will be ignored by the other kernel functions.")
    parser.add_argument('--coef', type=int, default=1, help="Bias term used in the polynomial kernel function.")
    parser.add_argument('--gamma', type=float, default=1000, help="Used in the rbf kernel function.")
    parser.add_argument('--model_save_path', type=str, default='./saved_model.pkl', help="model save path")


get_args()
args = parser.parse_args()
  • 算法输出:
if __name__ == "__main__":
    # return the saved model and test samples' accuracy
    loaded_model, accuracy = main(args)

1.1.11 XGBoost

  • 算法标签:#机器学习,#监督学习,#分类
  • 算法简介:
    • XGBoost是一种高效的机器学习算法,它是一种基于树的集成学习方法,能够在大规模数据集上进行快速、准确的预测和分类。XGBoost采用了一种特殊的梯度提升算法,能够在训练过程中不断优化模型的性能,同时还能够自动处理缺失值和异常值等问题。XGBoost还具有高度的可扩展性和灵活性,可以应用于各种不同的机器学习任务,包括分类、回归、排序和推荐等。
  • 算法API说明:
    • 算法输入:
# coding:utf-8
'''
@Time    : 2024/7/25 15:20
@Author  : dingkun-swjtu
@FileName: configs.py
@Desc    : 参数设置
'''

import argparse

parser = argparse.ArgumentParser()  # 参数输入


def get_args():
    parser.add_argument('--is_debug', type=bool, default=False, help="Whether to debug or not, TRUE or FALSE")
    parser.add_argument('--input_data_dir', type=str, default=r'../data/xgboost.txt',
                        help="The input data consists of multidimensional features and labels 'y', with labels Y being 0, ..., N-1,"
                             "and the shape of the data is [number of samples, number of features + 1].")
    parser.add_argument('--test_size', type=float, default=0.4, help="test sample ratio")
    parser.add_argument('--seed', type=int, default=2, help="seed")
    parser.add_argument('--model_save_path', type=str, default='./saved_model.pkl', help="model save path")


get_args()
args = parser.parse_args()
  • 算法输出:
if __name__ == "__main__":
    # return the saved model and test samples' accuracy
    loaded_model, accuracy = main(args)

1.1.12 粒子群优化

  • 算法标签:#机器学习,#监督学习,#分类
  • 算法简介:
    • 粒子群优化算法(Particle Swarm Optimization, PSO)是近年来由J. Kennedy和R. C. Eberhart等开发的一种新的进化算法(Evolutionary Algorithm - EA)。PSO 算法属于进化算法的一种,和模拟退火算法相似,它也是从随机解出发,通过迭代寻找最优解,它也是通过适应度来评价解的品质,但它比遗传算法规则更为简单,它没有遗传算法的“交叉”(Crossover) 和“变异”(Mutation) 操作,它通过追随当前搜索到的最优值来寻找全局最优。这种算法以其实现容易、精度高、收敛快等优点引起了学术界的重视,并且在解决实际问题中展示了其优越性。粒子群算法是一种并行算法。
  • 算法API说明:
    • 算法输入:
# coding:utf-8
'''
@Time    : 2024/7/25 15:53
@Author  : dingkun-swjtu
@FileName: configs.py
@Desc    : 参数设置
'''
import argparse

parser = argparse.ArgumentParser()  # 参数输入


def get_args():
    parser.add_argument('--is_debug', type=bool, default=False, help="Whether to debug or not, TRUE or FALSE")
    parser.add_argument('--input_data_dir', type=str, default=r'../data/particle_swarm_optimization.txt',
                        help="The input data consists of multidimensional features and labels 'y', with labels Y being 0, ..., N-1,"
                             "and the shape of the data is [number of samples, number of features + 1].")
    parser.add_argument('--test_size', type=float, default=0.4, help="test sample ratio")
    parser.add_argument('--population_size', type=int, default=100, help="population size")
    parser.add_argument('--n_generations', type=int, default=10, help="number of generations")
    parser.add_argument('--inertia_weight', type=float, default=0.8, help="inertia weight, float [0,1)")
    parser.add_argument('--cognitive_weight', type=float, default=0.8, help="cognitive weight, float [0,1)")
    parser.add_argument('--social_weight', type=float, default=0.8, help="social weight: float [0,1)")
    parser.add_argument('--max_velocity', type=int, default=5, help="The maximum allowed value for the velocity.")
    parser.add_argument('--model_save_path', type=str, default='./saved_model.pkl', help="model save path")


get_args()
args = parser.parse_args()
  • 算法输出:
if __name__ == "__main__":
    # return the saved model and test samples' accuracy
    loaded_model, accuracy = main(args)

1.1.13 朴素贝叶斯

  • 算法标签:#机器学习,#监督训练,#分类
  • 算法简介:
    • 朴素贝叶斯(Naive Bayes)是一种基于贝叶斯定理的机器学习算法。它基于一个简单但强有力的前提假设:所有的特征之间相互独立且对最终结果的影响权重相等。这种假设被称为“朴素”,因为它忽略了特征之间的相关性。但实际上,朴素贝叶斯在许多实际应用中表现出色,例如文本分类和垃圾邮件过滤等。
  • 算法API说明:
    • 算法输入:
# coding:utf-8
'''
@Time    : 2024/7/25 16:32
@Author  : dingkun-swjtu
@FileName: configs.py
@Desc    : 参数设置
'''
import argparse

parser = argparse.ArgumentParser()  # 参数输入


def get_args():
    parser.add_argument('--is_debug', type=bool, default=False, help="Whether to debug or not, TRUE or FALSE")
    parser.add_argument('--input_data_dir', type=str, default=r'../data/naive_bayes.txt',
                        help="The input data consists of multidimensional features and labels 'y', with labels Y being 0, ..., N-1,"
                             "and the shape of the data is [number of samples, number of features + 1].")
    parser.add_argument('--test_size', type=float, default=0.4, help="test sample ratio")
    parser.add_argument('--model_save_path', type=str, default='./saved_model.pkl', help="model save path")


get_args()
args = parser.parse_args()
  • 算法输出:
if __name__ == "__main__":
    # return the saved model and test samples' accuracy
    loaded_model, accuracy = main(args)

1.1.14 K最近邻

  • 算法标签:#机器学习,#监督学习,#分类
  • 算法简介:
    • K最近邻(K Nearest Neighbors,KNN)是基于实例的学习方法,通过比较新数据点与已知类别训练集中数据点的距离,找出最近K个邻居,并根据多数类别决定新数据点的类别。它简单易懂、适应性强,但计算复杂度高、对异常值敏感。KNN广泛应用于推荐系统、金融市场分析、市场细分等领域。该算法的核心思想是:对于一个新的、未知类别的数据点,通过比较其与已知类别训练集中的数据点的距离,找出与其最近的K个邻居,并依据这K个邻居的多数类别来决定新数据点的类别归属。
  • 算法API说明:
    • 算法输入:
# coding:utf-8
'''
@Time    : 2024/7/25 16:57
@Author  : dingkun-swjtu
@FileName: configs.py
@Desc    : 参数设置
'''
import argparse

parser = argparse.ArgumentParser()  # 参数输入


def get_args():
    parser.add_argument('--is_debug', type=bool, default=False, help="Whether to debug or not, TRUE or FALSE")
    parser.add_argument('--input_data_dir', type=str, default=r'../data/k_nearest_neighbors.txt',
                        help="The input data consists of multidimensional features and labels 'y', with labels Y being 0, ..., N-1,"
                             "and the shape of the data is [number of samples, number of features + 1].")
    parser.add_argument('--test_size', type=float, default=0.33, help="test sample ratio")
    parser.add_argument('--k', type=int, default=5, help="The number of closest neighbors that will determine the class of the "
                                                         "sample that we wish to predict.")
    parser.add_argument('--model_save_path', type=str, default='./saved_model.pkl', help="model save path")


get_args()
args = parser.parse_args()
  • 算法输出:
if __name__ == "__main__":
    # return the test samples' accuracy
    accuracy = main(args)

1.1.15 K-means

  • 算法标签:#机器学习,#无监督学习,#聚类
  • 算法简介:
    • k均值聚类算法(K-means)是一种迭代求解的聚类分析算法,其步骤是,预将数据分为K组,则随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。每分配一个样本,聚类的聚类中心会根据聚类中现有的对象被重新计算。这个过程将不断重复直到满足某个终止条件。终止条件可以是没有(或最小数目)对象被重新分配给不同的聚类,没有(或最小数目)聚类中心再发生变化,误差平方和局部最小。
  • 算法API说明:
    • 算法输入:
# coding:utf-8
'''
@Time    : 2024/7/25 17:19
@Author  : dingkun-swjtu
@FileName: configs.py
@Desc    : 参数设置
'''
import argparse

parser = argparse.ArgumentParser()  # 参数输入


def get_args():
    parser.add_argument('--is_debug', type=bool, default=False, help="Whether to debug or not, TRUE or FALSE")
    parser.add_argument('--input_data_dir', type=str, default=r'../data/k_means.txt',
                        help="The input data consists of multidimensional features and labels 'y', with labels Y being 0, ..., N-1,"
                             "and the shape of the data is [number of samples, number of features + 1].")
    parser.add_argument('--test_size', type=float, default=0.33, help="test sample ratio")
    parser.add_argument('--k', type=int, default=3, help="The number of clusters the algorithm will form.")
    parser.add_argument('--max_iterations', type=int, default=500, help="The number of iterations the algorithm will run for if it does "
                                                                        "not converge before that. ")
    parser.add_argument('--model_save_path', type=str, default='./saved_model.pkl', help="model save path")


get_args()
args = parser.parse_args()
  • 算法输出:
if __name__ == "__main__":
    main(args)

1.1.16 DBSCAN

  • 算法标签:#机器学习,#无监督学习,#聚类
  • 算法简介:
    • DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的聚类算法,它将数据点聚类成密度相连的最大集合,把具有高密度的数据区域划分为簇,能够发现任意形状的簇,并识别噪声点。
  • 算法API说明:
    • 算法输入:
# coding:utf-8
'''
@Time    : 2024/7/25 17:44
@Author  : dingkun-swjtu
@FileName: configs.py
@Desc    : 参数设置
'''
import argparse

parser = argparse.ArgumentParser()  # 参数输入


def get_args():
    parser.add_argument('--is_debug', type=bool, default=False, help="Whether to debug or not, TRUE or FALSE")
    parser.add_argument('--input_data_dir', type=str, default=r'../data/dbscan.txt',
                        help="The input data consists of multidimensional features and labels 'y', with labels Y being 0, ..., N-1,"
                             "and the shape of the data is [number of samples, number of features + 1].")
    parser.add_argument('--eps', type=float, default=0.17, help="The radius within which samples are considered neighbors.")
    parser.add_argument('--min_samples', type=int, default=5, help="The number of neighbors required for the sample to be a core point.")
    parser.add_argument('--model_save_path', type=str, default='./saved_model.pkl', help="model save path")


get_args()
args = parser.parse_args()
  • 算法输出:
if __name__ == "__main__":
    main(args)

1.1.17 高斯混合模型

  • 算法标签:#机器学习,#无监督学习,#聚类
  • 算法简介:
    • 高斯混合模型(Gaussian Mixture Model,GMM)是一种概率模型类统计学习方法,它可以有效地拟合复杂的数据分布,并通过样本的概率密度分布来解决数据样本的聚类问题,在生物学统计和医学统计领域有广泛的应用。
  • 算法API说明:
    • 算法输入:
# coding:utf-8
'''
@Time    : 2024/7/25 19:08
@Author  : dingkun-swjtu
@FileName: configs.py
@Desc    : 参数设置
'''
import argparse

parser = argparse.ArgumentParser()  # 参数输入


def get_args():
    parser.add_argument('--is_debug', type=bool, default=False, help="Whether to debug or not, TRUE or FALSE")
    parser.add_argument('--input_data_dir', type=str, default=r'../data/gaussian_mixture_model.txt',
                        help="The input data consists of multidimensional features and labels 'y', with labels Y being 0, ..., N-1,"
                             "and the shape of the data is [number of samples, number of features + 1].")
    parser.add_argument('--k', type=int, default=3, help="The number of clusters the algorithm will form.")
    parser.add_argument('--max_iterations', type=int, d[README.md](..%2FML-From-Scratch%2FREADME.md)efault=2000, help="The number of iterations the algorithm will run for if it does "
                                                                         "not converge before that.")
    parser.add_argument('--model_save_path', type=str, default='./saved_model.pkl', help="model save path")


get_args()
args = parser.parse_args()
  • 算法输出:
if __name__ == "__main__":
    main(args)

1.1.18 Adaboost

  • 算法标签:#机器学习,#监督学习,#分类
  • 算法简介:
    • AdaBoost是Adaptive Boosting的简称,属于集成算法(Ensemble Method)中Boosting类别中的一种。它是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。其算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改过权值的新数据集送给下层分类器进行训练,最后将每次训练得到的分类器最后融合起来,作为最后的决策分类器。使用adaboost分类器可以排除一些不必要的训练数据特征,并放在关键的训练数据上面。
  • 算法API说明:
    • 算法输入:
# coding:utf-8
'''
@Time    : 2024/7/25 19:27
@Author  : dingkun-swjtu
@FileName: configs.py
@Desc    : 参数设置
'''
import argparse

parser = argparse.ArgumentParser()  # 参数输入


def get_args():
    parser.add_argument('--is_debug', type=bool, default=False, help="Whether to debug or not, TRUE or FALSE")
    parser.add_argument('--input_data_dir', type=str, default=r'../data/adaboost.txt',
                        help="The input data consists of multidimensional features and labels 'y', with labels 'y' being -1 and 1, "
                             "and the shape of the data is [number of samples, number of features + 1].")
    parser.add_argument('--test_size', type=float, default=0.5, help="test samples ratio.")
    parser.add_argument('--n_clf', type=int, default=5, help="The number of weak classifiers that will be used.")
    parser.add_argument('--model_save_path', type=str, default='./saved_model.pkl', help="model save path")


get_args()
args = parser.parse_args()
  • 算法输出:
if __name__ == "__main__":
    # return the saved model and test samples' accuracy
    loaded_model, accuracy = main(args)

1.1.19 遗传算法

  • 算法标签:#机器学习
  • 算法简介:
    • 遗传算法(Genetic Algorithm,GA)一种计算机算法,模拟了基因遗传学中的自然选择和遗传机制。它是一种在黑盒优化问题中应用广泛的优化算法,通过对问题的候选解进行进化、选择、交叉和变异等操作,得到一个较优的解。
  • 算法API说明:
    • 算法输入:
# coding:utf-8
'''
@Time    : 2024/7/25 20:06
@Author  : dingkun-swjtu
@FileName: configs.py
@Desc    : 参数设置
'''
import argparse

parser = argparse.ArgumentParser()  # 参数输入


def get_args():
    parser.add_argument('--is_debug', type=bool, default=False, help="Whether to debug or not, TRUE or FALSE")
    parser.add_argument('--target_string', type=str, default="Genetic Algorithm", help="The string which the GA should try to produce.")
    parser.add_argument('--population_size', type=int, default=100, help="The number of individuals (possible solutions) in the population.")
    parser.add_argument('--mutation_rate', type=float, default=0.05, help="The rate (or probability) of which the alleles (chars in this case) should be "
                                                                          "randomly changed.")
    parser.add_argument('--iterations', type=int, default=1000, help="The number of iterations the algorithm will run for if it does "
                                                                     "not converge before that. ")


get_args()
args = parser.parse_args()
  • 算法输出:
if __name__ == "__main__":
    main(args)

1.2 深度学习

1.2.1 多层感知机

  • 算法标签:#深度学习,#监督学习,#分类
  • 算法简介:
    • 多层感知机(Multilayer Perceptron,MLP)是一种常见的前向人工神经网络。它由多个神经元层组成,其中至少有一个隐藏层,以及一个输出层。每个神经元通常都与接下来一层的所有神经元相连。 MLP 被广泛应用于分类、回归等任务中。在 MLP 中,输入数据被输入到神经元网络中,经过多层的变换处理之后,产生最终的输出结果。
  • 算法API说明:
    • 算法输入:
# coding:utf-8
'''
@Time    : 2024/7/27 12:09
@Author  : dingkun-swjtu
@FileName: configs.py
@Desc    : 参数设置
'''
import argparse

parser = argparse.ArgumentParser()  # 参数输入


def get_args():
    parser.add_argument('--is_debug', type=bool, default=False, help="Whether to debug or not, TRUE or FALSE")
    parser.add_argument('--input_data_dir', type=str, default=r'../data/multilayer_perceptron.txt',
                        help="The input data consists of multidimensional features and labels 'y', with labels Y being 0,..., N - 1,"
                             "and the shape of the data is [number of samples, number of features + 1].")
    parser.add_argument('--test_size', type=float, default=0.4, help="test sample ratio")
    parser.add_argument('--n_hidden', type=int, default=512, help="The number of neurons in the hidden layer.")
    parser.add_argument('--n_epochs', type=int, default=50, help="epochs")
    parser.add_argument('--batch_size', type=int, default=256, help="batch size")
    parser.add_argument('--model_save_path', type=str, default='./saved_model.pkl', help="model save path")


get_args()
args = parser.parse_args()
  • 算法输出:
if __name__ == "__main__":
    # return the saved model and test samples' accuracy
    loaded_model, accuracy = main(args)

1.2.2 循环神经网络

  • 算法标签:#深度学习,#时序预测
  • 算法简介:
    • 循环神经网络(Recurrent Neural Network,RNN)是一类以序列(sequence)数据为输入,在序列的演进方向进行递归(recursion)且所有节点(循环单元)按链式连接的递归神经网络 。与传统神经网络不同的是,循环神经网络引入了时间维度和状态维度,将输入和状态一起传递到下一步,从而建立了时间上的关系和记忆功能。
  • 算法API说明:
    • 算法输入:
# coding:utf-8
'''
@Time    : 2024/7/29 14:47
@Author  : dingkun-swjtu
@FileName: configs.py
@Desc    : 参数设置
'''
import argparse

parser = argparse.ArgumentParser()  # 参数输入


def get_args():
    parser.add_argument('--is_debug', type=bool, default=False, help="Whether to debug or not, TRUE or FALSE")
    # parser.add_argument('--input_data_dir', type=str, default=r'../data/recurrent_neural_network.txt',
    #                     help="The input data consists of multidimensional features and labels 'y', with labels Y being 0,..., N - 1,"
    #                          "and the shape of the data is [number of samples, number of features + 1].")
    parser.add_argument('--test_size', type=float, default=0.4, help="test sample ratio")
    parser.add_argument('--n_units', type=int, default=10, help="The number of hidden states in the layer.")
    parser.add_argument('--bptt_trunc', type=int, default=5, help="Decides how many time steps the gradient should be propagated backwards through "
                                                                  "states given the loss gradient for time step t.")
    parser.add_argument('--input_shape', type=tuple, default=(10, 20), help="The expected input shape of the layer. For dense layers a single "
                                                                            "digit specifying the number of features of the input. "
                                                                            "Must be specified if it is the first layer in the network.")
    parser.add_argument('--n_epochs', type=int, default=500, help="epochs")
    parser.add_argument('--batch_size', type=int, default=256, help="batch size")
    parser.add_argument('--model_save_path', type=str, default='./saved_model.pkl', help="model save path")


get_args()
args = parser.parse_args()
  • 算法输出:
if __name__ == "__main__":
    # return the saved model and test samples' accuracy
    loaded_model, accuracy = main(args)

1.2.3 卷积神经网络

  • 算法标签:#深度学习,#分类
  • 算法简介:
    • 卷积神经网络(Convolutional Neural Network,CNN)是一种深度学习算法,它具有表征学习能力,可以按照其阶层结构对输入信息进行平移不变的处理。它是一种前馈神经网络,具有深度结构,包含卷积计算。它可以用于图像分类、语音识别等任务。
  • 算法API说明:
    • 算法输入:
# coding:utf-8
'''
@Time    : 2024/7/30 14:59
@Author  : dingkun-swjtu
@FileName: configs.py
@Desc    : 参数设置
'''

import argparse

parser = argparse.ArgumentParser()  # 参数输入


def get_args():
    parser.add_argument('--run_nums', type=int, default=1, help="Number of repeated training iterations for the model.")
    # datasets
    parser.add_argument('--train_data_dir', type=str, default=r"../data/C3_1200_6000.mat", help="Input train data path. "
                                                                                                "Train data includes 'train_data' and 'train_label'.")
    parser.add_argument('--test_data_dir', type=str, default=r"../data/C3_1200_6000.mat", help="Input test data path. "
                                                                                               "Test data includes 'test_data' and 'test_label'.")
    parser.add_argument('--sample_length', type=int, default=6000, help="Sample length.")
    # paras
    parser.add_argument('--c', type=int, default=4, help="The number of classes.")
    parser.add_argument('--lr', type=float, default=0.005, help="Learning rate.")
    parser.add_argument('--n_epoch', type=int, default=100, help="The number of epoch.")
    parser.add_argument('--optimizer', type=str, default='Adam', help="Optimizer.")
    parser.add_argument('--gpu', type=int, default=0, help='Ind of gpu.')
    parser.add_argument('--batch_size', type=int, default=64, help='Batch size.')
    parser.add_argument('--input_channel', type=int, default=1, help='Input channel.')
    parser.add_argument('--model_save_path', type=str, default='./saved_model.pkl', help="Model save path.")


get_args()
args = parser.parse_args()
  • 算法输出:
if __name__ == '__main__':
    warnings.filterwarnings('ignore')  # 忽略warnning
    device = 'cuda' if torch.cuda.is_available() else 'cpu'  # 判断是否有显卡,有则用cuda计算,否则用cpu计算

    for i in range(args.run_nums):  # 重复试验次数
        loaded_model, saved_model_test_acc = main(args, run_id=i)  # 记录每次训练的名字

1.2.4 进化神经网络

  • 算法标签:#深度学习,#分类
  • 算法简介:
    • 进化神经网络(Evolutionary Neural Network,ENN)是基于进化计算和神经网络两大智能分支,将二者有机融合在一起产生的一种全新神经网络模型。
  • 算法API说明:
    • 算法输入:

    • 算法输出:

1.2.5 自编码网络

  • 算法标签:#深度学习,#分类
  • 算法简介:
    • 自编码网络(DeepAutoencoderNetwork,DAN)是神经网络的一种,是一种无监督学习方法,使用了反向传播算法,目标是使输出=输入。 自编码器内部有隐藏层 ,可以产生编码表示输入。1986 年Rumelhart 提出。自编码器主要作用在于通过复现输出而捕捉可以代表输入的重要因素,利用中间隐层对输入的压缩表达,达到像PCA那样的找到原始信息主成分的效果。传统自编码器被用于降维或特征学习。
  • 算法API说明:
    • 算法输入:

    • 算法输出:

1.2.6 生成对抗网络

  • 算法标签:#深度学习,#生成式
  • 算法简介:
    • 生成对抗网络(Generative Adversarial Network,GAN)一种深度学习模型,由两个神经网络构成:生成器和判别器。生成器负责生成虚拟数据,判别器则负责判断这些数据是真实数据还是虚拟数据。两个网络不断反复训练和竞争,从而不断提高生成器生成真实数据的能力,直到生成的数据与真实数据无法区分。GAN可以用于图像、声音、文本等各种类型的数据生成和合成,被广泛应用于计算机视觉、自然语言处理等领域。
  • 算法API说明:
    • 算法输入:

    • 算法输出:

1.2.7 深度残差网络

  • 算法标签:#深度学习,#分类
  • 算法简介:
    • 深度残差网络(Deep Residual Network,ResNet)是 Kaiming He et al. 提出的,一种运用了短路连接的神经网络形式。深度残差网络本身并没有一个固定的结构与参数,这使得深度残差网络非常灵活,可以有效的插入其他模型而提高模型表现。短路链接在越过了卷积层后会直接与卷积层的输出结果进行对位相加(pointwise addition)。当反向传播执行时,一半的梯度会通过短路链接直接被传导到靠后的卷积层,另一半则会加上被短路链接越过的两个卷积层的参数梯度后再传播到靠后的卷积层。通过重复叠加这样的“残差网络块”就得到了深度残差网络。
  • 算法API说明:
    • 算法输入:
# coding:utf-8
'''
@Time    : 2024/7/30 20:35
@Author  : dingkun-swjtu
@FileName: configs.py
@Desc    : 参数设置
'''
import argparse

parser = argparse.ArgumentParser()  # 参数输入


def get_args():
    parser.add_argument('--run_nums', type=int, default=1, help="Number of repeated training iterations for the model.")
    # datasets
    parser.add_argument('--train_data_dir', type=str, default=r"../data/C3_1200_6000.mat", help="Input train data path. "
                                                                                                "Train data includes 'train_data' and 'train_label'.")
    parser.add_argument('--test_data_dir', type=str, default=r"../data/C3_1200_6000.mat", help="Input test data path. "
                                                                                               "Test data includes 'test_data' and 'test_label'.")
    parser.add_argument('--sample_length', type=int, default=6000, help="Sample length.")
    # paras
    parser.add_argument('--c', type=int, default=4, help="The number of classes.")
    parser.add_argument('--lr', type=float, default=0.005, help="Learning rate.")
    parser.add_argument('--n_epoch', type=int, default=100, help="The number of epoch.")
    parser.add_argument('--optimizer', type=str, default='Adam', help="Optimizer.")
    parser.add_argument('--gpu', type=int, default=0, help='Ind of gpu.')
    parser.add_argument('--batch_size', type=int, default=64, help='Batch size.')
    parser.add_argument('--input_channel', type=int, default=1, help='Input channel.')
    parser.add_argument('--model_save_path', type=str, default='./saved_model.pkl', help="Model save path.")


get_args()
args = parser.parse_args()
  • 算法输出:
if __name__ == '__main__':
    warnings.filterwarnings('ignore')  # 忽略warnning
    device = 'cuda' if torch.cuda.is_available() else 'cpu'  # 判断是否有显卡,有则用cuda计算,否则用cpu计算

    for i in range(args.run_nums):  # 重复试验次数
        loaded_model, saved_model_test_acc = main(args, run_id=i)  # 记录每次训练的名字

1.2.8 长短时记忆网络

  • 算法标签:#深度学习,#时序预测
  • 算法简介:
    • 长短时记忆网络(Long Short Term Memory,LSTM)是一种特殊类型的RNN,由Hochreiter和Schmidhuber于1997年提出,目的是解决传统RNN的问题。LSTM通过细胞记忆单元存储长期信息,并通过四个门控制信息量传递。
  • 算法API说明:
    • 算法输入:

    • 算法输出:

*环境依赖

# creating requirements.txt
$ pip freeze > requirements.txt
# windows
$ python -m venv [虚拟环境名称]
$ [虚拟环境名称]\Scripts\activate.bat
$ pip install -r requirements.txt
# linux
$ sudo apt install python3-venv
$ source [虚拟环境名称]/bin/activate
$ pip install -r requirements.txt

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages