We're still working out the delivery details for the component. Hopefully it will be available by April.
Thanks
-Jamie
We're still working out the delivery details for the component. Hopefully it will be available by April.
Thanks
-Jamie
Hi,
actually i want to implement a c# component that can help third party data mining algorithm
and i want managed plug-in algorithm (without wrapper),.
is it possible to write whole application in c#
as Analysis servisce is in c++ , can we implement it in c#
thanks in advance
~Chinmay
Hi chinmayv84,
This is very curious issue. I will go develop some code for you in free time.
Javier Luna
http://guydotnetxmlwebservices.blogspot.com/
I'm assuming that you're aware of the managed plug-in framework that's available for download here: http://www.microsoft.com/downloads/details.aspx?familyid=DF0BA5AA-B4BD-4705-AA0A-B477BA72A9CB&displaylang=en#DMAPI.
This package includes the source code for a sample plug-in algorithm written in C#.
Can you clarify your scenario and why/if this does not meet your needs (since you indicate that you don't want to use a "wrapper")?
|||hi
i think writing wrapper is not a good idea
actually i want to remove COM from this implmentation
i am tring to write component in c# which is following COM standards
can u help me , as i don't know how to write that whole COM in c#
thanks for reply
regards,
~chinmayv84
|||The package that Raman pointed to contains all the COM interop part as well as a sample using C#. The architecture is:
- a COM function wrapper, written in Managed C++
- a C# assembly that uses the first assembly and implements the actual algorithm
- a step-by-step tutorial explaining how to add more complexity to your plug-in algorithm
The full source code for all the components in included, as well as documentation for all the classes and methods/properties.
If you choose to re-implement the first part in C#, you could follow the implementation details of the managed C++ assembly. However, due to the nature of the structures being passed back and forth between the server and the plug-in, we considered managed C++ as a much better choice, in terms of code clarity as well as performance.
Given that the server is unmanaged and C# is managed, I don't think there is a way to avoid the wrapper (whether that is a separate assembly or built-in into your assembly). And being in a separate assembly has no impact whatsoever on performance, given that they are loaded in the same memory space.
|||actually i want to re implement the first part
can u help me , from where should i start and how to proceed
thanks in advanced
~chinmayv84
|||I am really curious: why do you need to reimplement it?If there is a problem with the current implementation, please let us know so we can fix it. However, as I mentioned: if you want to re-implement it, a good starting point is to look at the source code for the wrapper, which is included in the download pointed by Raman
|||There is no specific reason to reimplement it,
actually i just want to remove com part and replace it with c# component
what are the basic(minimum) things that are requried to implement it and to test it
thanks
|||The purpose of the wrapper is so that you can write the algorithms in C# rather than COM. The native interfaces for plug-ins is COM, so they can't be "removed." However, you can do any implementation of algorithms you wish in C# due to the wrapper.
Are you asking "what are the basic things that are required to implement and test an algorithm?" or "what are the basic things that are required to implement and test a wrapper?" - because these are two completely different things.
|||ok ,thanks for help
is it to write COM in C# ? so that wrrapper in c#
and it can handle native interface for plug-in
and i want basic things that are requried to test wrapper
|||
If you're trying the re-implement the COM interfaces in C#, it will be much harder than the managed C++ wrapper we've provided - you'll need to do your own research in that case.
Testing the wrapper would be a combination of whitebox testing and a sample plug-in written using your custom wrapper methods (similar to the one we supply with our Managed Plug-in API Framework).
Hi,
actually i want to implement a c# component that can help third party data mining algorithm
and i want managed plug-in algorithm (without wrapper),.
is it possible to write whole application in c#
as Analysis servisce is in c++ , can we implement it in c#
thanks in advance
~Chinmay
Hi chinmayv84,
This is very curious issue. I will go develop some code for you in free time.
Javier Luna
http://guydotnetxmlwebservices.blogspot.com/
|||
I'm assuming that you're aware of the managed plug-in framework that's available for download here: http://www.microsoft.com/downloads/details.aspx?familyid=DF0BA5AA-B4BD-4705-AA0A-B477BA72A9CB&displaylang=en#DMAPI.
This package includes the source code for a sample plug-in algorithm written in C#.
Can you clarify your scenario and why/if this does not meet your needs (since you indicate that you don't want to use a "wrapper")?
|||hi
i think writing wrapper is not a good idea
actually i want to remove COM from this implmentation
i am tring to write component in c# which is following COM standards
can u help me , as i don't know how to write that whole COM in c#
thanks for reply
regards,
~chinmayv84
|||The package that Raman pointed to contains all the COM interop part as well as a sample using C#. The architecture is:
- a COM function wrapper, written in Managed C++
- a C# assembly that uses the first assembly and implements the actual algorithm
- a step-by-step tutorial explaining how to add more complexity to your plug-in algorithm
The full source code for all the components in included, as well as documentation for all the classes and methods/properties.
If you choose to re-implement the first part in C#, you could follow the implementation details of the managed C++ assembly. However, due to the nature of the structures being passed back and forth between the server and the plug-in, we considered managed C++ as a much better choice, in terms of code clarity as well as performance.
Given that the server is unmanaged and C# is managed, I don't think there is a way to avoid the wrapper (whether that is a separate assembly or built-in into your assembly). And being in a separate assembly has no impact whatsoever on performance, given that they are loaded in the same memory space.
|||
actually i want to re implement the first part
can u help me , from where should i start and how to proceed
thanks in advanced
~chinmayv84
|||I am really curious: why do you need to reimplement it?If there is a problem with the current implementation, please let us know so we can fix it. However, as I mentioned: if you want to re-implement it, a good starting point is to look at the source code for the wrapper, which is included in the download pointed by Raman
|||
There is no specific reason to reimplement it,
actually i just want to remove com part and replace it with c# component
what are the basic(minimum) things that are requried to implement it and to test it
thanks
|||The purpose of the wrapper is so that you can write the algorithms in C# rather than COM. The native interfaces for plug-ins is COM, so they can't be "removed." However, you can do any implementation of algorithms you wish in C# due to the wrapper.
Are you asking "what are the basic things that are required to implement and test an algorithm?" or "what are the basic things that are required to implement and test a wrapper?" - because these are two completely different things.
|||ok ,thanks for help
is it to write COM in C# ? so that wrrapper in c#
and it can handle native interface for plug-in
and i want basic things that are requried to test wrapper
|||
If you're trying the re-implement the COM interfaces in C#, it will be much harder than the managed C++ wrapper we've provided - you'll need to do your own research in that case.
Testing the wrapper would be a combination of whitebox testing and a sample plug-in written using your custom wrapper methods (similar to the one we supply with our Managed Plug-in API Framework).
Hi,
actually i want to implement a c# component that can help third party data mining algorithm
and i want managed plug-in algorithm (without wrapper),.
is it possible to write whole application in c#
as Analysis servisce is in c++ , can we implement it in c#
thanks in advance
~Chinmay
Hi chinmayv84,
This is very curious issue. I will go develop some code for you in free time.
Javier Luna
http://guydotnetxmlwebservices.blogspot.com/
I'm assuming that you're aware of the managed plug-in framework that's available for download here: http://www.microsoft.com/downloads/details.aspx?familyid=DF0BA5AA-B4BD-4705-AA0A-B477BA72A9CB&displaylang=en#DMAPI.
This package includes the source code for a sample plug-in algorithm written in C#.
Can you clarify your scenario and why/if this does not meet your needs (since you indicate that you don't want to use a "wrapper")?
|||hi
i think writing wrapper is not a good idea
actually i want to remove COM from this implmentation
i am tring to write component in c# which is following COM standards
can u help me , as i don't know how to write that whole COM in c#
thanks for reply
regards,
~chinmayv84
|||The package that Raman pointed to contains all the COM interop part as well as a sample using C#. The architecture is:
- a COM function wrapper, written in Managed C++
- a C# assembly that uses the first assembly and implements the actual algorithm
- a step-by-step tutorial explaining how to add more complexity to your plug-in algorithm
The full source code for all the components in included, as well as documentation for all the classes and methods/properties.
If you choose to re-implement the first part in C#, you could follow the implementation details of the managed C++ assembly. However, due to the nature of the structures being passed back and forth between the server and the plug-in, we considered managed C++ as a much better choice, in terms of code clarity as well as performance.
Given that the server is unmanaged and C# is managed, I don't think there is a way to avoid the wrapper (whether that is a separate assembly or built-in into your assembly). And being in a separate assembly has no impact whatsoever on performance, given that they are loaded in the same memory space.
|||actually i want to re implement the first part
can u help me , from where should i start and how to proceed
thanks in advanced
~chinmayv84
|||I am really curious: why do you need to reimplement it?If there is a problem with the current implementation, please let us know so we can fix it. However, as I mentioned: if you want to re-implement it, a good starting point is to look at the source code for the wrapper, which is included in the download pointed by Raman
|||There is no specific reason to reimplement it,
actually i just want to remove com part and replace it with c# component
what are the basic(minimum) things that are requried to implement it and to test it
thanks
|||The purpose of the wrapper is so that you can write the algorithms in C# rather than COM. The native interfaces for plug-ins is COM, so they can't be "removed." However, you can do any implementation of algorithms you wish in C# due to the wrapper.
Are you asking "what are the basic things that are required to implement and test an algorithm?" or "what are the basic things that are required to implement and test a wrapper?" - because these are two completely different things.
|||ok ,thanks for help
is it to write COM in C# ? so that wrrapper in c#
and it can handle native interface for plug-in
and i want basic things that are requried to test wrapper
|||
If you're trying the re-implement the COM interfaces in C#, it will be much harder than the managed C++ wrapper we've provided - you'll need to do your own research in that case.
Testing the wrapper would be a combination of whitebox testing and a sample plug-in written using your custom wrapper methods (similar to the one we supply with our Managed Plug-in API Framework).
This package includes the source code for a sample plug-in algorithm written in C#.
in this source code all .cs files are modified for clustering algorithm
if my plugin algorithm is of association or classification type then what modifications are requried in source code?
Both for classification and for association, you would have to remove the Clustering specific methods from the algorithm object ( ClusterMembership and CaseLikelihood)
If you want to implement an associations algorithm that behaves (in terms of modeling and querying) like Microsoft_Association_Rules, make sure that your plug-in supports:
- nested tables (both input and outputs) (in Metadata.GetSupInputcontentTypes and GetSupPredictContentTypes)
- PredictAssociation (start by enabling this in Algorithmmetadata.GetSupportedStandardFunctions)
For details on how to actually handle nested tables, check the "Attributes and modeling", "The Case processor" and "The Mining Case Object" articles in the CHM file coming with the sample, as well as the documentation for the Predict method of the AlgorithmBase object (same CHM file) and the comments in the sample implementation of this method
Hope this helps
bogdan
|||
is it possible to configure whole code for any type of algorithm
|||
You can have any type of algorithm that works with attribute value pairs. E.g. an attribute "Gender" can have the discrete values "Male","Female", etc., and an attribute Age could have a continuous value such as 45. The majority of data mining algorithms fit this pattern - e.g. association, classification, etc.
If you need direct access to strings e.g. BLAST, this approach does not work, and is not currently supported by our plug-in API's (there are still BLAST implementations for SQL Server, however). Note that most string-based problems can be solved by first preprocessing the strings into attributes and then using a traditional algorithm approach. There is some flexibility that you could have you algorithm examine input strings during the training phase, but this approach is not generally recommended and exact strings that were not encountered during the training phase will not be available during the prediction phase in this version.
|||why there is a requriment of making changes in source code?
i want all in dll
like algorithm should be provided in dll
application will configure itself and add new algorithm
hence i want to generalize all
|||You only need to create the source code for your algorithm. I'm very confused by the direction of the question. The framework allows you to create a DLL or assembly that encapsulates your algorithm and you can plug it into the server directly. The framework is generalized to handle any algorithm that works with attributes and values, e.g. association, classification, estimation, etc.|||what modifications required for "time series" algorithm ?
is there any modifications we need to do in framework for adding "time series plugin algorithm"
|||If you want to use the same Time Series function as Microsoft Time Series (i.e. PredictTimeSeries), then:
- your class implementing the IDMAlgorithm should also implement IDMTimeSeriesAlgorithm (both interfaces are defined in the same file, dmalgo.h/idl)
- your metadata class should add DMSF_PredictTimeSeries to the list of supported functions
You could also choose not to use our infrastructure. In this case, the requirements mentioned above do not apply: you can write your own algorithm function to perform forecasting
This package includes the source code for a sample plug-in algorithm written in C#.
in this source code all .cs files are modified for clustering algorithm
if my plugin algorithm is of association or classification type then what modifications are requried in source code?
Both for classification and for association, you would have to remove the Clustering specific methods from the algorithm object ( ClusterMembership and CaseLikelihood)
If you want to implement an associations algorithm that behaves (in terms of modeling and querying) like Microsoft_Association_Rules, make sure that your plug-in supports:
- nested tables (both input and outputs) (in Metadata.GetSupInputcontentTypes and GetSupPredictContentTypes)
- PredictAssociation (start by enabling this in Algorithmmetadata.GetSupportedStandardFunctions)
For details on how to actually handle nested tables, check the "Attributes and modeling", "The Case processor" and "The Mining Case Object" articles in the CHM file coming with the sample, as well as the documentation for the Predict method of the AlgorithmBase object (same CHM file) and the comments in the sample implementation of this method
Hope this helps
bogdan
|||is it possible to configure whole code for any type of algorithm
|||
You can have any type of algorithm that works with attribute value pairs. E.g. an attribute "Gender" can have the discrete values "Male","Female", etc., and an attribute Age could have a continuous value such as 45. The majority of data mining algorithms fit this pattern - e.g. association, classification, etc.
If you need direct access to strings e.g. BLAST, this approach does not work, and is not currently supported by our plug-in API's (there are still BLAST implementations for SQL Server, however). Note that most string-based problems can be solved by first preprocessing the strings into attributes and then using a traditional algorithm approach. There is some flexibility that you could have you algorithm examine input strings during the training phase, but this approach is not generally recommended and exact strings that were not encountered during the training phase will not be available during the prediction phase in this version.
|||why there is a requriment of making changes in source code?
i want all in dll
like algorithm should be provided in dll
application will configure itself and add new algorithm
hence i want to generalize all
|||You only need to create the source code for your algorithm. I'm very confused by the direction of the question. The framework allows you to create a DLL or assembly that encapsulates your algorithm and you can plug it into the server directly. The framework is generalized to handle any algorithm that works with attributes and values, e.g. association, classification, estimation, etc.|||what modifications required for "time series" algorithm ?
is there any modifications we need to do in framework for adding "time series plugin algorithm"
|||If you want to use the same Time Series function as Microsoft Time Series (i.e. PredictTimeSeries), then:
- your class implementing the IDMAlgorithm should also implement IDMTimeSeriesAlgorithm (both interfaces are defined in the same file, dmalgo.h/idl)
- your metadata class should add DMSF_PredictTimeSeries to the list of supported functions
You could also choose not to use our infrastructure. In this case, the requirements mentioned above do not apply: you can write your own algorithm function to perform forecasting
This package includes the source code for a sample plug-in algorithm written in C#.
in this source code all .cs files are modified for clustering algorithm
if my plugin algorithm is of association or classification type then what modifications are requried in source code?
Both for classification and for association, you would have to remove the Clustering specific methods from the algorithm object ( ClusterMembership and CaseLikelihood)
If you want to implement an associations algorithm that behaves (in terms of modeling and querying) like Microsoft_Association_Rules, make sure that your plug-in supports:
- nested tables (both input and outputs) (in Metadata.GetSupInputcontentTypes and GetSupPredictContentTypes)
- PredictAssociation (start by enabling this in Algorithmmetadata.GetSupportedStandardFunctions)
For details on how to actually handle nested tables, check the "Attributes and modeling", "The Case processor" and "The Mining Case Object" articles in the CHM file coming with the sample, as well as the documentation for the Predict method of the AlgorithmBase object (same CHM file) and the comments in the sample implementation of this method
Hope this helps
bogdan
|||
is it possible to configure whole code for any type of algorithm
|||
You can have any type of algorithm that works with attribute value pairs. E.g. an attribute "Gender" can have the discrete values "Male","Female", etc., and an attribute Age could have a continuous value such as 45. The majority of data mining algorithms fit this pattern - e.g. association, classification, etc.
If you need direct access to strings e.g. BLAST, this approach does not work, and is not currently supported by our plug-in API's (there are still BLAST implementations for SQL Server, however). Note that most string-based problems can be solved by first preprocessing the strings into attributes and then using a traditional algorithm approach. There is some flexibility that you could have you algorithm examine input strings during the training phase, but this approach is not generally recommended and exact strings that were not encountered during the training phase will not be available during the prediction phase in this version.
|||why there is a requriment of making changes in source code?
i want all in dll
like algorithm should be provided in dll
application will configure itself and add new algorithm
hence i want to generalize all
|||You only need to create the source code for your algorithm. I'm very confused by the direction of the question. The framework allows you to create a DLL or assembly that encapsulates your algorithm and you can plug it into the server directly. The framework is generalized to handle any algorithm that works with attributes and values, e.g. association, classification, estimation, etc.|||what modifications required for "time series" algorithm ?
is there any modifications we need to do in framework for adding "time series plugin algorithm"
|||If you want to use the same Time Series function as Microsoft Time Series (i.e. PredictTimeSeries), then:
- your class implementing the IDMAlgorithm should also implement IDMTimeSeriesAlgorithm (both interfaces are defined in the same file, dmalgo.h/idl)
- your metadata class should add DMSF_PredictTimeSeries to the list of supported functions
You could also choose not to use our infrastructure. In this case, the requirements mentioned above do not apply: you can write your own algorithm function to perform forecasting
This package includes the source code for a sample plug-in algorithm written in C#.
in this source code all .cs files are modified for clustering algorithm
if my plugin algorithm is of association or classification type then what modifications are requried in source code?
Both for classification and for association, you would have to remove the Clustering specific methods from the algorithm object ( ClusterMembership and CaseLikelihood)
If you want to implement an associations algorithm that behaves (in terms of modeling and querying) like Microsoft_Association_Rules, make sure that your plug-in supports:
- nested tables (both input and outputs) (in Metadata.GetSupInputcontentTypes and GetSupPredictContentTypes)
- PredictAssociation (start by enabling this in Algorithmmetadata.GetSupportedStandardFunctions)
For details on how to actually handle nested tables, check the "Attributes and modeling", "The Case processor" and "The Mining Case Object" articles in the CHM file coming with the sample, as well as the documentation for the Predict method of the AlgorithmBase object (same CHM file) and the comments in the sample implementation of this method
Hope this helps
bogdan
|||
is it possible to configure whole code for any type of algorithm
|||
You can have any type of algorithm that works with attribute value pairs. E.g. an attribute "Gender" can have the discrete values "Male","Female", etc., and an attribute Age could have a continuous value such as 45. The majority of data mining algorithms fit this pattern - e.g. association, classification, etc.
If you need direct access to strings e.g. BLAST, this approach does not work, and is not currently supported by our plug-in API's (there are still BLAST implementations for SQL Server, however). Note that most string-based problems can be solved by first preprocessing the strings into attributes and then using a traditional algorithm approach. There is some flexibility that you could have you algorithm examine input strings during the training phase, but this approach is not generally recommended and exact strings that were not encountered during the training phase will not be available during the prediction phase in this version.
|||why there is a requriment of making changes in source code?
i want all in dll
like algorithm should be provided in dll
application will configure itself and add new algorithm
hence i want to generalize all
|||You only need to create the source code for your algorithm. I'm very confused by the direction of the question. The framework allows you to create a DLL or assembly that encapsulates your algorithm and you can plug it into the server directly. The framework is generalized to handle any algorithm that works with attributes and values, e.g. association, classification, estimation, etc.|||what modifications required for "time series" algorithm ?
is there any modifications we need to do in framework for adding "time series plugin algorithm"
|||If you want to use the same Time Series function as Microsoft Time Series (i.e. PredictTimeSeries), then:
- your class implementing the IDMAlgorithm should also implement IDMTimeSeriesAlgorithm (both interfaces are defined in the same file, dmalgo.h/idl)
- your metadata class should add DMSF_PredictTimeSeries to the list of supported functions
You could also choose not to use our infrastructure. In this case, the requirements mentioned above do not apply: you can write your own algorithm function to perform forecasting
This package includes the source code for a sample plug-in algorithm written in C#.
in this source code all .cs files are modified for clustering algorithm
if my plugin algorithm is of association or classification type then what modifications are requried in source code?
Both for classification and for association, you would have to remove the Clustering specific methods from the algorithm object ( ClusterMembership and CaseLikelihood)
If you want to implement an associations algorithm that behaves (in terms of modeling and querying) like Microsoft_Association_Rules, make sure that your plug-in supports:
- nested tables (both input and outputs) (in Metadata.GetSupInputcontentTypes and GetSupPredictContentTypes)
- PredictAssociation (start by enabling this in Algorithmmetadata.GetSupportedStandardFunctions)
For details on how to actually handle nested tables, check the "Attributes and modeling", "The Case processor" and "The Mining Case Object" articles in the CHM file coming with the sample, as well as the documentation for the Predict method of the AlgorithmBase object (same CHM file) and the comments in the sample implementation of this method
Hope this helps
bogdan
|||
is it possible to configure whole code for any type of algorithm
|||
You can have any type of algorithm that works with attribute value pairs. E.g. an attribute "Gender" can have the discrete values "Male","Female", etc., and an attribute Age could have a continuous value such as 45. The majority of data mining algorithms fit this pattern - e.g. association, classification, etc.
If you need direct access to strings e.g. BLAST, this approach does not work, and is not currently supported by our plug-in API's (there are still BLAST implementations for SQL Server, however). Note that most string-based problems can be solved by first preprocessing the strings into attributes and then using a traditional algorithm approach. There is some flexibility that you could have you algorithm examine input strings during the training phase, but this approach is not generally recommended and exact strings that were not encountered during the training phase will not be available during the prediction phase in this version.
|||why there is a requriment of making changes in source code?
i want all in dll
like algorithm should be provided in dll
application will configure itself and add new algorithm
hence i want to generalize all
|||You only need to create the source code for your algorithm. I'm very confused by the direction of the question. The framework allows you to create a DLL or assembly that encapsulates your algorithm and you can plug it into the server directly. The framework is generalized to handle any algorithm that works with attributes and values, e.g. association, classification, estimation, etc.|||what modifications required for "time series" algorithm ?
is there any modifications we need to do in framework for adding "time series plugin algorithm"
|||If you want to use the same Time Series function as Microsoft Time Series (i.e. PredictTimeSeries), then:
- your class implementing the IDMAlgorithm should also implement IDMTimeSeriesAlgorithm (both interfaces are defined in the same file, dmalgo.h/idl)
- your metadata class should add DMSF_PredictTimeSeries to the list of supported functions
You could also choose not to use our infrastructure. In this case, the requirements mentioned above do not apply: you can write your own algorithm function to perform forecasting