• 向量余弦值(Cosine)(C#)


    接前面一篇TF-IDF的代码,用其结果来计算出向量的余弦值的代码

    View Code
    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace Cluster
    {
        
    static class Cosine
        {
            
    /// <summary>
            
    /// 计算向量余弦值
            
    /// </summary>
            
    /// <param name="vector1"></param>
            
    /// <param name="vector2"></param>
            public static double Calculate(Dictionary<intdouble> vector1, Dictionary<intdouble> vector2)
            {
                
    double dotProduct = CalcDotProduct(vector1, vector2);
                
    double length1 = CalcLength(vector1);
                
    double length2 = CalcLength(vector2);
                
    double cosine = dotProduct / (length1 * length2);

                
    return cosine;
            }

            
    /// <summary>
            
    /// 计算向量长度(vector length)
            
    /// </summary>
            
    /// <param name="vector"></param>
            
    /// <returns></returns>
            private static double CalcLength(Dictionary<intdouble> vector)
            {
                
    double length = 0;
                
    foreach (KeyValuePair<intdouble> kvp in vector)
                {
                    length 
    += Math.Pow(kvp.Value, 2);
                }
                
    return Math.Sqrt(length);
            }

            
    /// <summary>
            
    /// 计算向量点积(dot product)/内积(inner product)
            
    /// </summary>
            
    /// <param name="vector1"></param>
            
    /// <param name="vector2"></param>
            
    /// <returns></returns>
            private static double CalcDotProduct(Dictionary<intdouble> vector1, Dictionary<intdouble> vector2)
            {
                
    double dotProduct = 0;
                
    foreach (KeyValuePair<intdouble> kvp in vector1)
                {
                    
    if (vector2.ContainsKey(kvp.Key))
                    {
                        dotProduct 
    += kvp.Value * vector2[kvp.Key];
                    }
                }
                
    return dotProduct;
            }
        }
    }
  • 相关阅读:
    数据库各类模板
    React+Cesium安装部署
    VS2019+QT 制作自定义控件
    Vue+arcgis(1)
    将TIF/PNG等转为GeoTIFF
    QT 同名信号无法识别的问题
    VSCode配置PyQt5
    Python中类属性和self属性的区别
    postgresql的数据复制
    在windows server 2012 R2上搭建nginx环境
  • 原文地址:https://www.cnblogs.com/live41/p/2013041.html
Copyright © 2020-2023  润新知